簡體   English   中英

從其他類JAVA調用方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM