[英]Call A Method From a different Class JAVA
我有一個名為“ createAlarms()”的方法,該方法在初始應用程序安裝時就設置了特定時間的警報。 運行此警報時,它將創建一個通知,該通知是我使用廣播接收器類創建的。
public void createAlarms() {
cal = Calendar.getInstance();
cal.add(Calendar.HOUR, alarmintervalint);
calintent = new Intent(this, AlarmBroadcastReceiver.class);
calpendingintent = PendingIntent.getBroadcast(this.getApplicationContext(), 12345, calintent, 0);
am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, alarmintervalint, calpendingintent);
}
我希望此警報重復每個“ alarmintervalint”時間段。 我可以通過使用“ am.setRepeating()”函數來做到這一點,但是我的問題要復雜得多。 發送一定數量的警報(例如,將由程序計算出50個警報)后,我希望所有值都發生變化,以使alarmintervalint發生變化。
private void showNotification(Context context) {
PendingIntent notifpi = PendingIntent.getActivity(context, 0, new Intent(context, Main.class), 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Hello!")
.setContentText("Welcome!")
.addAction(R.drawable.ic_launcher, "Open App", notifpi);
mBuilder.setContentIntent(notifpi);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
System.out.println("6");
}
例如,現在,警報每2小時響一次,我每2小時收到一條通知。 收到50條通知后,我想將鬧鍾設置為3小時后關閉。 然后在收到50條通知后,將其設為4小時。 (這只是一個例子,將會更加復雜。
我該怎么做? 現在,我認為在我的broadcastreceiver類中有一個計數器,在計數器達到50(在本示例中為例)之后,它將調用createAlarms()類並更改時間和內容。 這行得通嗎?
最簡單的方法是使用Timer
。 在初始設置方法,主方法或任何其他方法中設置TimerTask
。
范例:
import java.util.TimerTask;
public class Schedular extends TimerTask {
@Override
public void run() {
//your implementation.
System.out.println("Run Me ~");
}
}
import java.util.Timer;
import java.util.TimerTask;
public class Main{
public static void main(String[] args){
TimerTask task = new Schedular();
Timer timer = new Timer();
//miliseconds
timer.schedule(task, 1000, 60000);
}
}
對於參考: 計時器
我不確定您要使用的鬧鍾是什么,但是您似乎希望人們逐漸減少吸煙的頻率。
在這種情況下,我想補充一下以前的答案,以防您的應用崩潰或手機重啟,您可能希望保留上一次使用的時間間隔。 您可以使用SharedPreferences輕松歸檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.