Как и многие другие люди, я использую идентификаторы AppWidget для хранения конфигурации для каждого виджета. К сожалению, эти идентификаторы колеблются между двумя значениями.Идентификатор AppWidget при перезагрузке
В основном, следующий по-видимому, происходит из образца перспективе:
- App виджет создан с активностью конфигурации
- ID = 70
- 10 секунд передать
- ID = 153
- Перезагрузка/установка нового APK с Eclipse
- id = 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);
Спасибо, что подтвердили, что мой код в порядке. Сегодня я начал отлаживать, и оказалось, что идентификатор моего виджета не менялся. Проблема заключалась в том, что Android дает 2 идентификатора виджета, когда есть только один виджет. Я не знаю, откуда этот второй идентификатор, но это привело к сбою службы обновления виджета, потому что для этого не было данных. Теперь я проигнорировал эти «плохие виджеты», и проблема, похоже, решена. – Overv