phone重启后如何重启闹钟?
How to restart Alarm after phone Reboot?
在我的项目中,我使用 AlarmManager
每天启动一次 Service
。它工作正常。但是当 phone 重新启动时它停止工作。
我通过网络搜索,他们建议启动 BroadcastReceiver
以收听 RECEIVE_BOOT_COMPLETED
操作并重新启动 Alarm
。
我不知道该怎么做。
请给我一个重置闹钟的简单方法。我在这里发布了我的代码。
我的启动警报代码
Intent start_alarm=new Intent(MainPage.this,MailService.class);
PendingIntent pi=PendingIntent.getService(MainPage.this, 100, start_alarm, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,1);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000*60*60*24,pi);
我的报警服务
@Override
public void onStart(Intent intent,int startId){
super.onStart(intent,startId);
//* My Code for sending Mail *//
}
服务清单注册
<service android:name=".MailService"/>
只需创建一个广播接收器并将其注册到 manifest 上 action_reboot,然后在 onReceive 方法中启动警报
这是注册接收器的方法
<receiver android:name="com.packagename.RebootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
这是接收器
public class RebootReceiver extends BroadcastReceiver
{
public void onReceive(Context arg0, Intent arg1)
{
//start your alarm
}
}
在我的项目中,我使用 AlarmManager
每天启动一次 Service
。它工作正常。但是当 phone 重新启动时它停止工作。
我通过网络搜索,他们建议启动 BroadcastReceiver
以收听 RECEIVE_BOOT_COMPLETED
操作并重新启动 Alarm
。
我不知道该怎么做。
请给我一个重置闹钟的简单方法。我在这里发布了我的代码。
我的启动警报代码
Intent start_alarm=new Intent(MainPage.this,MailService.class);
PendingIntent pi=PendingIntent.getService(MainPage.this, 100, start_alarm, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,1);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000*60*60*24,pi);
我的报警服务
@Override
public void onStart(Intent intent,int startId){
super.onStart(intent,startId);
//* My Code for sending Mail *//
}
服务清单注册
<service android:name=".MailService"/>
只需创建一个广播接收器并将其注册到 manifest 上 action_reboot,然后在 onReceive 方法中启动警报
这是注册接收器的方法
<receiver android:name="com.packagename.RebootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
这是接收器
public class RebootReceiver extends BroadcastReceiver
{
public void onReceive(Context arg0, Intent arg1)
{
//start your alarm
}
}