Должен ли AppWidgetProvider отключать себя при отключенном обратном вызове?

#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. Я бы ожидал, что это будет вести себя так, как вы обнаружили — после удаления последнего экземпляра виджета приложения вы не сможете добавлять новые экземпляры виджета приложения. Возможно, это связано с тем, что это виджет приложения для прошивки или что-то в этом роде, но это определенно странно.