我想在启动时运行一项服务,然后计划每 10 分钟运行一次。我该怎么办?
如果在启动时我可以强制安排 10 分钟,但我想我每次启动时都需要安排这个,因为重新启动后所有的日程都丢失了?
我想在启动时运行一项服务,然后计划每 10 分钟运行一次。我该怎么办?
如果在启动时我可以强制安排 10 分钟,但我想我每次启动时都需要安排这个,因为重新启动后所有的日程都丢失了?
在我的应用程序中,我在ACTION_BOOT_COMPLETED Intent 上注册了一个广播接收器,以便在设备启动完成时收到通知。要获得结果,您必须在清单文件中指定以下内容:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
...
<receiver
android:name=".YOUR_BROADCAST_RECEIVER">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
在 BroadcastReceiver 我启动了服务
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, serviceClass));
...
}
最后在服务的onStartCommand中
public int onStartCommand(Intent intent, int flags, int startId) {
...
setNextSchedule();
...
}
private void setNextSchedule() {
long time = WHEN_YOU WANT_THE SERVICE TO BE SCHEDULED AGAIN;
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getService(this, 0,new Intent(this, this.getClass()), PendingIntent.FLAG_ONE_SHOT);
am.set(AlarmManager.RTC_WAKEUP, time, pi);
}
AlarmManger将使用待处理的意图将您传递的意图发送到您的服务。看看这里
再见