我有一個包含4個按鈕來顯示4個股票價格的小部件,他們每個人都會啓動到相同的活動Quote.class來顯示股票細節。在onUpdate()中,它將用股票符號設置額外的pendingIntent。當我點擊按鈕A後,它會顯示股票A的報價活動。然後,我按返回按鈕到主屏幕,報價活動調用onDestroy(),當我點擊按鈕B時,股票B將正常顯示。但是,當它顯示股票A後,當我點擊HOME按鈕時,報價活動只調用onStop而不調用onDestroy(),然後當我點擊按鈕B時,它將調用onStart()並顯示顯示股票A的相同實例。Android - 當使用不同額外功能從小部件啓動相同的活動時,如何防止從HOME按鈕返回後顯示相同的實例?
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時獲得新的額外功能?任何幫助表示讚賞。由於
究竟應該如何傳遞數據?你的意思是使用intent.setData(Uri uri)方法嗎? – nickyfantasy 2010-11-05 16:48:03
是的。爲股票創建自己的簡單Uri。 – EboMike 2010-11-05 17:04:12
它適用於隨機數據嗎?我的方法來避免緩存掛起的意圖是對不同的按鈕/小部件使用不同的意圖名稱。 – xandy 2010-11-06 10:10:18