Weeelp, я вернулся к разработке Android 8 лет спустя (с удивлением обнаружил, что уже прокомментировал этот вопрос), и теперь у меня есть реальный ответ. Похоже, он стал более известным спустя годы после того, как этот вопрос был впервые опубликован, но в основном: в Android есть ошибка, которая остается не исправленной почти навсегда.
Все эти фантомные идентификаторы - это appWidgetIds виджетов, которые вы начали создавать в какой-то момент, , но были неправильно отменены при выполнении действия по настройке виджета .
Более подробная информация о документации разработчика включает пример кода для подтверждения создания виджета:
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();
Внимательно прочитайте подсказку под ней:
Совет. При первом открытии действия «Конфигурация» задайте для параметра «Результат» значение RESULT_CANCELED вместе с EXTRA_APPWIDGET_ID, как показано в шаге 5 выше. Таким образом, если пользователь отменяет действие до достижения конца, узел виджета приложения получает уведомление о том, что конфигурация была отменена и виджет приложения не будет добавлен.
Хотя Android принимает setResult(RESULT_CANCEL);
(и многие учебники используют его, и я полагаю, что даже официальная документация когда-то имела такой пример кода), это неправильно. Не передавая новый идентификатор, он остается в системе как один из тех таинственных идентификаторов-фантомов.
Правильный способ отменить создание виджета - setResult(RESULT_CANCEL, resultValue);