【发布时间】:2010-11-05 00:28:39
【问题描述】:
我有一个包含 4 个按钮来显示 4 个股票价格的小部件,每个按钮都会启动到同一个活动 Quote.class 以显示股票详细信息。在 onUpdate() 中,它将使用带有股票代码的附加内容设置 pendingIntent。在我点击按钮 A 后,它转到显示股票 A 的报价活动。然后我点击返回按钮到主屏幕,报价活动调用 onDestroy(),当我点击按钮 B 时,股票 B 将正确显示。但是,当我在显示股票 A 后点击 HOME 按钮时,报价活动仅调用 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 中添加一个标志应该可以解决这个问题。但我试过了 i.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK 或 FLAG_ACTIVITY_NEW_TASK 或 FLAG_ACTIVITY_NO_HISTORY),它们都没有任何区别。
那么有什么方法可以让它工作吗?如何从 HOME 按钮中删除历史堆栈?当我点击按钮 B 时,如何在 Quote 活动中调用 onCreate 并获得新的附加功能?任何帮助表示赞赏。谢谢
【问题讨论】: