在android中启动后是否删除所有Pending Intent?

时间:2015-04-13 13:57:16

标签: android android-intent alarmmanager android-pendingintent

我无法使用请求ID再次检索它吗?

喜欢使用:

pendingIntent = PendingIntent.getBroadcast(this, RequestID, intent, PendingIntent.FLAG_UPDATE_CURRENT);

PS:我在PendingIntent中拥有所有pendingExtra,否则我必须再次从数据库中获取!

2 个答案:

答案 0 :(得分:1)

  

在android中启动后是否删除了所有Pending Intent?

是。它们仅存储在RAM中,处于核心操作系统过程中。

  

我无法使用请求ID再次检索它吗?

重启后没有。

答案 1 :(得分:0)

是的,重启后将删除所有PendingIntents。但是,您可以在手机启动时重新创建它们。 This tutorial here在解释如何处理启动监听器方面做得非常好。

按如下方式定义一个类DeviceBootReceiver,它将在设备启动时运行您的代码(创建PendingIntents或其他任何您想要的东西)。:

import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class DeviceBootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
            // Do your thing in here
        }
    }
}

不要忘记(a)获得许可,(b)在AndroidManifest.xml中声明此接收器:

<application ...>

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    ...

    <receiver android:name=".DeviceBootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>

</application>