Intereting Posts
Перечислите все действия в APK из оболочки Как использовать код сборки ARM в проекте Android? Как создать Multimap в Java на Android Можно ли сохранить уведомление о сохранении темы Firebase в sqlite, когда приложение закрыто в android Запросить права суперпользователя на редактирование файла Загрузка разделяемых библиотек с зависимостями на Android Плагин Android PhoneGap: успешный и неудачный обратный вызов не вызван Java.lang.IllegalStateException: приложение PagerAdapter изменило содержимое адаптера без вызова PagerAdapter # notifyDataSetChanged android Передача данных в службу onDestroy () О вызове собственного метода в android Как очистить кучу? Невозможно создать обработчик внутри потока, который не вызвал Looper.prepare () Проверьте, зарегистрирован ли пользователь уже с помощью Auth.GoogleSignInApi? Сколько устройств мы можем подключить через Bluetooth от BLE до Android? Этот класс обработчика должен быть статическим или может возникнуть утечка (com.test.test3.ui.MainActivity.1)

Виджет onUpdate вызывается при запуске операции конфигурации

Я реализую виджет, и я сталкиваюсь со следующими проблемами:

1) onUpdate вызывается, когда я добавляю виджет на главный экран, даже если я указал активность конфигурации. Как только я добавлю его на главный экран, APPWIDGET_ENABLED широковещательная передача APPWIDGET_ENABLED , за которой следует APPWIDGET_UPDATE а затем запускается настройка конфигурации. Это ошибка? Как я должен понимать в методе onUpdate , который вызывается до того, как возвращается активность конфигурации? Я могу сделать это с помощью общего значения предпочтений, но я бы хотел, чтобы он вел себя так, как написано в руководстве разработчика, то есть метод onUpdate не следует вызывать.

2) onUpdate не updatePeriodMillis каждые updatePeriodMillis секунд, которые были установлены на 10000 , то есть 10 секунд для целей тестирования. Я пропустил что-то в декларации receiver в файле манифеста? Я продолжаю получать предупреждение Lint. Экспортированный приемник не требует разрешения, но я думаю, что это проблема Lint, а не моя ошибка. EDIT : Я только что нашел это в справочных документах: Примечание. Обновления, запрашиваемые с помощью updatePeriodMillis, не будут отправляться более одного раза каждые 30 минут. Поэтому правильно, что виджет не обновляется, как часто я указывал, и я изменил время на 1800000 миллисекунд.

3) Я хочу передать свое собственное действие трансляции поставщику виджета, правильно ли добавить другой блок- receiver в таргетинге манифеста одного и того же класса провайдера или добавить только другое намерение в intent-filter , содержащий действие APPWIDGET_UPDATE ? Кстати, я прокомментировал мой второй блок receiver и это не причина проблем выше. Я создал другой блок- receiver потому что я хотел объявить его как не экспортированный, чтобы позволить действие intent-filter запускаться только кодом приложения, а не кем-то еще.

AndroidManifest.xml

  <receiver android:name="MyWidgetProvider" android:exported="true"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/my_widget_info" /> </receiver> <receiver android:name="MyWidgetProvider" android:exported="false"> <intent-filter> <action android:name="org.test.mywidget.FORCE_SMALL_WIDGET_UPDATE" /> </intent-filter> </receiver> 

my_widget_info.xml

 <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="294dp" android:minHeight="110dp" android:updatePeriodMillis="1800000" android:initialLayout="@layout/my_widget_layout" android:configure="org.test.mywidget.MyWidgetConfiguration" android:resizeMode="none"> </appwidget-provider>