Android服务被停止,如何通知应用程序?

时间:2013-07-29 11:48:04

标签: android service android-pendingintent

我有一个类似于框架的应用程序 - 其他应用程序可以在我的应用程序中注册PendingIntent,在将来的某个时刻触发它们。我将PendingIntents保留在服务中的数组列表中,然后迭代它们以触发。要注册一个intent,应用程序会调用" startService()"在意图包中设置了PendingIntent。

在某些时候,我的服务正在关闭 - 或者更具体地说,我的数组列表正在被清空(这只能由Android杀死服务),因此我为已注册的应用程序丢失了我的PendingIntents。

如何让我的服务保持活力,或者更具体地说,让我的PendingItents不会丢失?我不想反对Android系统机制并制造一个hacky努力,我想知道谷歌认为应该这样做的方式。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用START_STICKY

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    // Put your code here
    return START_STICKY;
}

您可以尝试START_REDELIVER_INTENT

答案 1 :(得分:0)

当服务被杀死时,会调用onDestroy()方法。您可能可以覆盖onDestroy()方法并执行以下操作:

public void onDestroy(){
Intent intent = new Intent();
intent.setAction("SERVICESTOPPED");
sendBroadcast(intent);
super.onDestroy();  
}   

拥有一个侦听此意图的BroadcastReceiver,并在发生时处理该情况。 或者,在onstartCommand()中,如果将返回值指定为START_STICKY,则操作系统将在操作系统被杀死时重新启动服务。通常这种情况发生在长期运行的服务中