我有一個小部件的多個實例。 當我點擊一個窗口小部件如預期配置活動啓動,該活動檢索相應的控件ID(我跟着this post解釋如何區分意圖):主頁按鈕後,配置活動中的小部件ID未更新
Intent configIntent = new Intent(context, WidgetConfigureDisplayActivity.class);
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.mood_main_layout, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
所以一切工作正常,除了當我用家裏按鈕(而不是後面的那個)。
在主屏幕上,如果我單擊另一個窗口小部件實例,將顯示配置活動,但不會使用新的窗口小部件實例配置(附加中的窗口小部件ID未更改)進行更新。
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
我相信FLAG_UPDATE_CURRENT標誌的目的是更新活動中的控件ID,但它似乎沒有工作(我試圖覆蓋onNewIntent,方法的onResume沒有運氣)。玩launchMode &其他標誌也沒有幫助。
添加FLAG_ACTIVITY_NEW_TASK並沒有幫助。我已經嘗試過了。正如我回答我的問題FLAG_ACTIVITY_CLEAR_TOP的作品。但我不明白爲什麼FLAG_ACTIVITY_NEW_TASK不起作用,依據文檔「在新任務中啓動活動」。如果某個任務已經在運行您正在啓動的活動,則該任務將以其最後狀態進入前臺恢復並且活動在onNewIntent()中接收新的意圖「,並且我在onNewIntent方法中沒有收到任何新的意圖。 –