Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Widget не отвечет после отключения Studio от устр. Widget не обновляется 
V
    Опции темы
EgoBrain
Дата 20.11.2019, 04:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 534
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Виджет без Activity работает только пока Android Studio подключена к устройству.

Run app (Shift + F10) собирает приложение, устанавливает на устройство, виджет работает (обновляется и реагирует на нажатия).
Stop (Ctrl + F2) и виджет перестает работать, открываешь виджет в WidgetPreview повторно, виджет не работает.

На эмуляторе и на реальном устройстве поведение одинаковое.

Код

public class AppWidget extends AppWidgetProvider {
    public static String WIDGET_BUTTON = "ru.gov.sakhalin.airwidget.WIDGET_BUTTON";

    public static boolean doRotation = false;
    public static RemoteViews remoteViews;
    public static AppWidgetManager appWidgetManager;
    public static ComponentName watchWidget;

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        System.out.println("UPDATE");
        this.appWidgetManager = appWidgetManager;
        remoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget);
        watchWidget = new ComponentName(context, AppWidget.class);

        for (int appWidgetId : appWidgetIds) {
            remoteViews.setOnClickPendingIntent(R.id.updateButton, getPendingSelfIntent(context, WIDGET_BUTTON));
            appWidgetManager.updateAppWidget(watchWidget, remoteViews);
            updateAllData(context);
        }
    }
}


Как решить проблему и заставить Виджет работать всегда?
PM MAIL ICQ Skype   Вверх
EgoBrain
Дата 20.11.2019, 04:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 534
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



При работе с реальным устройством, после установки приложения и добавления виджета на рабочий стол, он работает до тех пор пока не нажать "Закрыть все приложения".
PM MAIL ICQ Skype   Вверх
EgoBrain
Дата 20.11.2019, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 534
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Xiaomi
Android 8.1.0
PM MAIL ICQ Skype   Вверх
EgoBrain
Дата 21.11.2019, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 534
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Свою конкретную проблему я решил.
Оказалось ситуация была неверно оценена, на самом деле нажатие "Force Stop" в системном меню настроек и нажатие "Clear All" в Xiaomi MIUI не убивает процесс, основной поток приложения остается активным и виджет продолжает получать сообщения. Что именно эти нажатия делают с приложением я не знаю, но результатом является то, что ссылки на объекты классов AppWidgetManager, RemoteViews и ComponentName обнуляются, поэтому становится невозможным обновлять Виджет.

Оказалось достаточным просто отлавливать такую ситуацию и пере инициализировать переменные.
Код

public class AppWidget extends AppWidgetProvider {
    public static RemoteViews remoteViews;
    public static AppWidgetManager appWidgetManager;
    public static ComponentName watchWidget;

    @Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        
        if(remoteViews == null)
            remoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget);

        if(appWidgetManager == null)
            appWidgetManager = AppWidgetManager.getInstance(context);

        if(watchWidget == null)
            watchWidget = new ComponentName(context, AppWidget.class);
    }
}

PM MAIL ICQ Skype   Вверх
Google
  Дата 9.12.2019, 12:35 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.