所以我需要在后台执行定期任务,即使我的应用已关闭。我是通过使用AlarmManager创建我的服务并在一段时间内重新启动它来完成的:
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;
}
正如您所看到的,我的服务旨在启动时不粘,做他的工作并立即停止。
Shedule(仅限快速测试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)
);
}
我的服务将在启动或警报时启动(目前每1秒)。但是,我不确定这是否是正确的方法来做我想要的。我注意到,大多数第三方应用程序都使用粘性服务,并且它们一直驻留在内存中。
所以我的问题是,我什么时候应该使用粘性服务?