0

我有一个名为“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 小时。(这只是一个例子,它会更复杂一些。

我该怎么做?现在我认为在我的广播接收器类中有某种计数器,当计数器达到 50(在本例中)后,它将调用 createAlarms() 类并更改时间和内容。这行得通吗?

4

2 回答 2

1

最简单的方法是使用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);
    }
}

参考:定时器

于 2013-07-17T10:01:44.417 回答
0

我不完全确定您使用警报器的目的是什么,但看起来您希望人们逐渐减少吸烟的频率。
在这种情况下,我想添加到之前的答案中,您可能希望保留上次使用的时间间隔,以防您的应用程序崩溃或手机重新启动。您可以使用SharedPreferences轻松归档。

于 2013-07-17T10:09:19.930 回答