Android使用AlarmManager以给定间隔重新创建服务

时间:2014-09-15 08:24:22

标签: android android-service android-alarms

我已经阅读了这个AlarmManager,但它对我来说仍然有点混乱。 所以我的应用程序中有一个Service,我想一直运行它(它是一个药用应用程序,所以它应该通知用户一直使用它),但是即使它Service Android会不时杀死,所以我希望安排 30分钟的间隔重新创建强>,然后再安排。我该怎么办?

2 个答案:

答案 0 :(得分:1)

对于已启动的服务,他们可以决定运行另外两种主要操作模式,具体取决于它们从onStartCommand()返回的值:START_STICKY用于根据需要显式启动和停止的服务,而START_NOT_STICKY或START_REDELIVER_INTENT用于在处理发送给它们的任何命令时应保持运行的服务。有关语义的更多详细信息,请参阅链接的文档。

http://developer.android.com/reference/android/app/Service.html

答案 1 :(得分:0)

研究此link ...以实施如何创建警报管理器

创建警报管理员类

private AlarmManager alarmMgr;
private PendingIntent alarmIntent;

alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 30);

 // setRepeating() lets you specify a precise custom interval--in this case,
//20 minutes.


alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
    1000 * 60 * 20, alarmIntent);

添加此信息

<receiver android:name=".SampleBootReceiver"
    android:enabled="false">
<intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>

希望这会对你有所帮助。