Java 执行定期后台任务的正确方法
所以我需要在后台执行定期任务,即使我的应用程序关闭了。我使用AlarmManager创建了我的服务,并在一段时间内重新启动它:Java 执行定期后台任务的正确方法,java,android,service,alarmmanager,Java,Android,Service,Alarmmanager,所以我需要在后台执行定期任务,即使我的应用程序关闭了。我使用AlarmManager创建了我的服务,并在一段时间内重新启动它: public class MyService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("MyService","On Command!"); stopS
public class MyService extends Service
{
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Log.i("MyService","On Command!");
stopSelf();
return START_NOT_STICKY;
}
正如你所看到的,我的服务是打算开始时不粘,做他的工作,并立即停止
时间表(仅用于快速测试的1秒,它实际上会导致wakelock):
我的服务将在启动或报警时启动(当前每1秒一次)。然而,我不确定这是否是做我想做的事情的正确方法。我注意到,大多数第三方应用程序都使用粘性服务,并且它们一直驻留在内存中
所以我的问题是,我什么时候应该使用粘性服务
@Override
public void onDestroy()
{
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.set(
alarm.RTC_WAKEUP,
System.currentTimeMillis() + (1000),
PendingIntent.getService(this, 0, new Intent(this, MyService.class), 0)
);
}