我有一个名为“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将由程序计算)之后,我希望所有值都改变,以便警报器值将改变。
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()类并改变时间和东西。这会有用吗?
答案 0 :(得分: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);
}
}
参考:Timer
答案 1 :(得分:0)
我不完全确定您使用的是什么警报器,但看起来您希望人们逐渐减少吸烟次数。
在这种情况下,我想添加到之前的答案,您可能希望保留上次使用的间隔,以防您的应用程序崩溃或手机重新启动。您可以使用SharedPreferences轻松实现这一目标。