#android #widget
#Android #виджет
Вопрос:
Я нашел com.android.settings.widget.SettingsAppWidgetProvider отключает себя при onDisabled()
обратном вызове и включает себя onEnabled()
.
@Override
public void onEnabled(Context context) {
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
@Override
public void onDisabled(Context context) {
Class clazz = com.android.settings.widget.SettingsAppWidgetProvider.class;
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
}
Я думаю, это странно. Если последний экземпляр «Powre Control» (имя виджета SettingsAppWidgetProvider
) удален, onDisabled()
вызывается, и этот поставщик отключает себя. Как он может получать дальнейшие трансляции после его отключения? Если он больше не может получать какие-либо трансляции, ACTION_APPWIDGET_ENABLED
он никогда не будет доставлен этому провайдеру, и у onEnabled()
обратного вызова не будет возможности быть вызванным, и тогда у этого провайдера не будет возможности повторно включить себя.
Я попробовал этот «трюк» в одном из моих виджетов onw и обнаружил, что мой AppWidgetProvider
больше не работает после удаления последнего экземпляра виджета.
Комментарии:
1. Я бы ожидал, что это будет вести себя так, как вы обнаружили — после удаления последнего экземпляра виджета приложения вы не сможете добавлять новые экземпляры виджета приложения. Возможно, это связано с тем, что это виджет приложения для прошивки или что-то в этом роде, но это определенно странно.