2

如果我正在与我的应用程序交互(使用),我有一个可以正常工作的警报,但如果我将它设置为第二天而不与我的应用程序交互,它就不起作用。因此我怀疑这是因为我的应用程序进程没有运行当时。

这就是我正在做的

    Calendar calSet = Calendar.getInstance();
    calSet.set(Calendar.HOUR_OF_DAY, selectedhour);
    calSet.set(Calendar.MINUTE, selectedminute);
    calSet.set(Calendar.YEAR, year);
    calSet.set(Calendar.MONTH, monthOfYear);
    calSet.set(Calendar.DATE, dayOfMonth);
    alarm = new Intent(ActivityA.this, Service.class);
    pendingIntent = PendingIntent.getService(getApplicationContext(), i++,alarm, 1);
    alarmanager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(),pendingIntent);  
4

1 回答 1

1

是的,如果手机重新启动,您将丢失已注册的任何 AlarmManager 意图。要解决这个问题,您应该为BOOT_COMPLETED. 对于onRecieve()您的接收器,您需要重新注册您之前注册的所有警报。

但是,如果您的进程只是被杀死并且手机没有重新启动,您的警报应该仍然会触发。

这可能会对您有所帮助:http: //developer.android.com/training/scheduling/alarms.html#boot

于 2013-10-29T04:52:19.743 回答