gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:17 24 4
gpt4 key购买 nike

我有一个包含 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com