【发布时间】:2013-08-08 15:28:32
【问题描述】:
像许多其他人一样,我使用 AppWidget ID 来存储每个小部件的配置。不幸的是,这些 ID 似乎在两个值之间波动。
基本上,示例运行似乎发生了以下情况:
- 使用配置活动创建的应用小部件
- id = 70
- 10 秒过去了
- id = 153
- 使用 Eclipse 重启/安装新 APK
- id = 70
在那之后它似乎不再改变。这可能是什么原因造成的?相关代码 sn-ps 如下,我正在从更新服务中打印应用小部件 ID,并使用 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);
【问题讨论】: