Android - 当从具有不同附加功能的小部件启动相同的 Activity 时,如何防止从主页按钮返回后显示相同的实例?

标签 android android-widget

我有一个包含 4 个按钮的小部件,用于显示 4 个股票价格,每个按钮都将启动到同一个 Activity Quote.class 中以显示股票详细信息。在 onUpdate() 中,它将设置 pendingIntent 以及带有股票代码的额外内容。在我点击按钮 A 后,它会转到显示股票 A 的报价 Activity 。然后我点击返回按钮回到主屏幕,报价 Activity 调用 onDestroy(),当我点击按钮 B 时,股票 B 将正确显示。然而,当我在它显示股票 A 后按下 HOME 按钮时,Quote Activity 只调用 onStop 而没有调用 onDestroy(),然后当我按下按钮 B 时,它将调用 onStart() 并且它显示与股票 A 相同的实例。

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.etappwidget); 
setQuoteIntent(context, views, R.id.view1, "BAC", 1);
setQuoteIntent(context, views, R.id.view2, "C", 2);
setQuoteIntent(context, views, R.id.view3, "GOOG", 3);
setQuoteIntent(context, views, R.id.view4, "AAPL", 4);

 private static void setQuoteIntent(Context context, RemoteViews views, int viewId, String symbol, int requestCode) {
 Intent i = new Intent(context, Quote.class);
 i.putExtra("SYMBOL", symbol);
 i.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
 PendingIntent pi = PendingIntent.getActivity(context, requestCode, i, PendingIntent.FLAG_UPDATE_CURRENT);
 views.setOnClickPendingIntent(viewId, pi);

本来我以为在Intent中加一个flag应该可以解决这个问题。但我试过了 i.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK 或 FLAG_ACTIVITY_NEW_TASK 或 FLAG_ACTIVITY_NO_HISTORY),它们都没有任何区别。

那么有什么方法可以让它发挥作用吗?如何从 HOME 按钮中删除历史堆栈?当我点击按钮 B 时,如何在报价 Activity 中调用 onCreate 并获得新的附加功能?任何帮助表示赞赏。谢谢

最佳答案

  • 如果您进行简单的任务切换(例如按住主页按钮),onDestroy 可能不会被调用是正常的。如果您需要进行清理,则需要进入 onPause
  • 我认为问题在于您的 PendingIntent 仅相差 extra。 PendingIntents 已缓存,因此如果您将两个用于相同的操作和数据,它们将相互覆盖。您可以通过给每个人一些随机数据来避免这种情况。尝试在数据中传递符号而不是通过额外的(无论如何这是首选)。

关于Android - 当从具有不同附加功能的小部件启动相同的 Activity 时,如何防止从主页按钮返回后显示相同的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4102627/

相关文章:

java - 如何使用 tomtom API 查找邮政编码的坐标

android - 如何在不发送请求的情况下从android中的服务器获取数据?

android - 创建一个安卓智能应用横幅

android - 定期更新 Android TextView 以显示倒计时

java - 如何从另一个 Activity 访问变量

android - 警报管理器触发通知

android - 如何在 android 中获取 Facebook 个人资料图片?

android - Jetplayer 与 soundPool?

android - 如何在 Android 中将 View 转换为位图?

android - Android 中的反转 ListView?