我有一个类似于框架的应用程序 - 其他应用程序可以在我的应用程序中注册PendingIntent,在将来的某个时刻触发它们。我将PendingIntents保留在服务中的数组列表中,然后迭代它们以触发。要注册一个intent,应用程序会调用" startService()"在意图包中设置了PendingIntent。
在某些时候,我的服务正在关闭 - 或者更具体地说,我的数组列表正在被清空(这只能由Android杀死服务),因此我为已注册的应用程序丢失了我的PendingIntents。
如何让我的服务保持活力,或者更具体地说,让我的PendingItents不会丢失?我不想反对Android系统机制并制造一个hacky努力,我想知道谷歌认为应该这样做的方式。
答案 0 :(得分:0)
您是否尝试过使用START_STICKY?
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Put your code here
return START_STICKY;
}
答案 1 :(得分:0)
当服务被杀死时,会调用onDestroy()方法。您可能可以覆盖onDestroy()方法并执行以下操作:
public void onDestroy(){
Intent intent = new Intent();
intent.setAction("SERVICESTOPPED");
sendBroadcast(intent);
super.onDestroy();
}
拥有一个侦听此意图的BroadcastReceiver,并在发生时处理该情况。 或者,在onstartCommand()中,如果将返回值指定为START_STICKY,则操作系统将在操作系统被杀死时重新启动服务。通常这种情况发生在长期运行的服务中