【发布时间】:2015-02-27 14:57:58
【问题描述】:
我们遇到了一个问题,如果应用程序由于内存不足而被终止,则来自 PendingIntent 的 Intent 的 extras Bundle 不会被存储。
我们创建一个通知:
// ...
final Intent intent = new Intent(this, ControllerActivity.class);
intent.putExtra(KEY_PUSH_NOTIFICATION, notification);
PendingIntent pIntent = PendingIntent.getActivity(this, 9349302, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pIntent);
//...
notificationManager.notify(123, builder.build());
当应用程序没有被操作系统杀死时,这可以正常工作...我们在 onCreate 和 onNewIntent 方法中添加了一些代码来记录额外内容:
Log.i("Test", "Intent Extras...");
if (intent.getExtras() != null) {
for (String key : intent.getExtras().keySet()) {
Log.i("Test", "Intent Extra: " + intent.getExtras().get(key));
}
}
这是应用程序尚未被杀死并且我们打开通知时的 LogCat:
I/Test﹕ Intent: Intent { Htcflg=0x1 cmp=com.package.removed.debug/com.package.removed.ControllerActivity bnds=[0,379][1080,571] (has extras) }
I/Test﹕ Intent Extra: com.package.removed.push.PushNotification@425f74b8
这是应用程序被杀死时的 LogCat:
I/Test﹕ Intent: Intent { cmp=com.package.removed.debug/com.package.removed.ControllerActivity }
这似乎很奇怪,因为PendingIntent 上的文档特别说:
...即使它拥有的应用程序的进程被杀死,PendingIntent 本身仍可用于其他进程。
我们还尝试了不同的 PendingIntent 标志,但没有成功。
我们正在使用一个应用程序来填充手机的 RAM,以使手机进入低内存状态。
有人知道问题可能是什么吗?
【问题讨论】:
标签: java android android-intent android-notifications android-pendingintent