0

我有一个像框架一样工作的应用程序 - 其他应用程序可以在我的应用程序中注册一个 PendingIntent,它会在将来的某个时间触发它们。我将 PendingIntents 保存在服务的数组列表中,然后遍历它们以触发。为了注册一个意图,应用程序调用“startService()”,并在意图包中设置了一个 PendingIntent。

在某些时候,我的服务正在关闭——或者更具体地说,我的数组列表正在被清空(这只能通过 Android 终止服务来发生),因此我失去了已注册应用程序的 PendingIntents。

如何让我的服务保持活力,或者更具体地说,如何让我的 PendingItents 不丢失?我不想违背 Android 系统机制并创建一个 hacky 努力,我想知道 Google 认为应该以何种方式完成。

4

2 回答 2

0

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

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

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

于 2013-07-31T15:30:33.367 回答
0

您是否尝试过START_STICKY

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

    // Put your code here
    return START_STICKY;
}

你可以试试START_REDELIVER_INTENT

于 2013-07-29T11:52:46.177 回答