Chr*_*ght 3 android caching android-pendingintent
给定两个具有不同数据A和B的相同小部件,当小部件A的数据显示在小部件启动的活动中时,按下后退按钮然后按下小部件B它一切正常.然而,当显示小部件A的数据时,按下主页按钮然后按下小部件B,仍然显示小部件A的数据.从Android - 当从具有不同附加功能的小部件启动相同的活动时,如何防止从HOME按钮返回后显示相同的实例?它表明我的问题是PendingIntents
(对于小部件A和B)两者都是相同的,并且仅在附加内容上有所不同,因此被缓存.即附加功能是widget ID,它是我需要检索widget-press动作的所有数据的关键.一个建议是使用不同的数据,但我似乎无法让这个工作.这是代码:
Intent intent = new Intent(context, WidgetActivity.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setData(Uri.withAppendedPath(Uri.parse("droidln://widget/id/"),
String.valueOf(appWidgetId)));
PendingIntent pendingIntent =
PendingIntent.getActivity(context, appWidgetId, intent, 0);
Run Code Online (Sandbox Code Playgroud)
添加setData
到意图产生没有区别.关于如何解决缓存挂起意图问题的任何想法?我也尝试过:
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
Run Code Online (Sandbox Code Playgroud)
和
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)
和
intent.setAction("actionstring" + System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
一切都没有效果.
尝试同时使用:
intent.setAction("actionstring" + System.currentTimeMillis());
PendingIntent.FLAG_UPDATE_CURRENT
(适用于您的情况:PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
我PendingIntent
在许多应用程序中使用这种风格,事实证明它是正确的.
我一直在使用的示例代码:
final ComponentName receiverName = new ComponentName(context, WidgetProvider.class);
Intent doSth = new Intent("REFRESH_ME" + System.currentTimeMillis());
doSth.setComponent(receiverName);
doSth.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);
PendingIntent doSthPending = PendingIntent.getBroadcast(context, 0, doSth, PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1005 次 |
最近记录: |