Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > Widget не отвечет после отключения Studio от устр.


Автор: EgoBrain 20.11.2019, 04:35
Виджет без 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);
        }
    }
}


Как решить проблему и заставить Виджет работать всегда?

Автор: EgoBrain 20.11.2019, 04:50
При работе с реальным устройством, после установки приложения и добавления виджета на рабочий стол, он работает до тех пор пока не нажать "Закрыть все приложения".

Автор: EgoBrain 20.11.2019, 06:57
Xiaomi
Android 8.1.0

Автор: EgoBrain 21.11.2019, 04:55
Свою конкретную проблему я решил.
Оказалось ситуация была неверно оценена, на самом деле нажатие "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);
    }
}

Автор: Mordin 11.12.2020, 16:24
А промокоды когда будет?

Автор: Hugibor 16.12.2020, 13:46
Уже сто летней давности конечно, или нет но вот можно же

Автор: trendtoreview43 7.12.2022, 12:18
Модератор: Сообщение скрыто.

Автор: volkovch 7.12.2022, 13:08
Модератор: Сообщение скрыто.

Автор: Robertraf 8.12.2022, 05:33
Модератор: Сообщение скрыто.

Автор: WilliamBrutt 8.12.2022, 10:25
Модератор: Сообщение скрыто.

Автор: Charlesencam 12.12.2022, 22:24
Модератор: Сообщение скрыто.

Автор: Sdvillaposy 13.12.2022, 14:12
Модератор: Сообщение скрыто.

Автор: LarryNet 13.12.2022, 17:44
Модератор: Сообщение скрыто.

Автор: Marusechkaget 14.12.2022, 13:17
Модератор: Сообщение скрыто.

Автор: Marusechkaget 14.12.2022, 14:06
Модератор: Сообщение скрыто.

Автор: MixailR 15.12.2022, 04:49
Модератор: Сообщение скрыто.

Автор: Olivermex 27.12.2022, 01:39
Модератор: Сообщение скрыто.

Автор: Olivermex 27.12.2022, 03:51
Модератор: Сообщение скрыто.

Автор: Olivermex 27.12.2022, 07:00
Модератор: Сообщение скрыто.

Автор: RobertBrany 29.12.2022, 23:30
Модератор: Сообщение скрыто.

Автор: Albertnon 1.1.2023, 04:50
Модератор: Сообщение скрыто.

Автор: Marthaciz 3.1.2023, 21:43
Модератор: Сообщение скрыто.

Автор: AlbertThami 4.1.2023, 15:46
Модератор: Сообщение скрыто.

Автор: zeenit 5.1.2023, 08:19
Модератор: Сообщение скрыто.

Автор: Buiferini 5.1.2023, 20:08
Модератор: Сообщение скрыто.

Автор: isaputinvv 6.1.2023, 03:00
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)