像许多其他人一样,我使用 AppWidget ID 来存储每个小部件的配置。不幸的是,这些 ID 似乎在两个值之间波动。
基本上,示例运行似乎发生了以下情况:
- 使用配置活动创建的应用小部件
- 编号 = 70
- 10秒过去
- 编号 = 153
- 使用 Eclipse 重新启动/安装新的 APK
- 编号 = 70
在那之后,它似乎不再改变。这可能是什么原因造成的?相关的代码片段如下,我正在从使用AlarmManager
.
AppWidgetProvider
service = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
配置活动
Bundle extras = getIntent().getExtras();
int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
ComponentName widget = new ComponentName(getPackageName(), WidgetConfigActivity.class.getName());
int[] widgetIds = widgetManager.getAppWidgetIds(widget);
// Store the configuration for this widget
SharedPreferences.Editor prefsEdit = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit();
// Some settings here
prefsEdit.commit();
// Send initial update request
Intent initialUpdate = new Intent(this, WidgetProvider.class);
initialUpdate.setAction("android.appwidget.action.APPWIDGET_UPDATE");
initialUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds);
sendBroadcast(initialUpdate);