android pendingIntent在按下Home Button后多次调用ACTION_EDIT联系人时缓存

时间:2011-09-06 05:42:06

标签: android android-pendingintent caching

我有一个带按钮的HOMESCREEN WIDGET。这是添加到按钮的动作:

Intent editContact = new Intent(Intent.ACTION_EDIT, ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.valueOf(contactID)));

editContact.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntent pendingEditContact = PendingIntent.getActivity(rcvContext, appWidgetID, editContact, PendingIntent.FLAG_UPDATE_CURRENT);

每当通过编辑联系人或按后退键而不进行编辑而保留用于编辑联系人的内部android活动时,一切正常并且活动将从堆栈中删除。从另一个窗口小部件重新启动活动会正确显示要编辑的相应联系人数据。

如果未编辑联系人并且通过按Android设备的主页按钮 ,则再次从另一个小部件重新启动其他联系人将替换先前的联系人数据。 不幸的是,这只发生在第二次启动时。任何大于2的尝试(即再次按下主页按钮而不编辑联系人)会导致活动保留以前的联系人数据进行编辑。显然,待处理的意图被缓存。这就是为什么 PendingIntent.FLAG_UPDATE_CURRENT 应该更新关于要编辑哪个联系人但没有用的意图: - (

我也得到了以下内容:

待定意向:

PendingIntent.FLAG_CANCEL_CURRENT;

活动:

editContact.putExtra("random", System.currentTimeMillis());

我希望您就解决此问题提出建议。非常感谢大家!

0 个答案:

没有答案