Вопрос по android, android-widget – Виджет не отвечает

1

У меня есть виджет, который использует сервис для обновления. На нем есть кнопка, чтобы открыть активность. Работает отлично. Однако иногда я нажимаю на виджет, чтобы открыть действие, и оно не будет работать или обновляться.

Мой вопрос:  что убивает виджет приложения. И если виджет мертв, почему он все еще отображается на экране. Есть ли в любом случае пережить этот конкретный виджет без создания другого.

Спасибо

Если виджет больше не отвечает. Он мертв? Есть ли способ пережить это. Mark Ismail
Сервис все еще работает и отправляет обновления на виджет. Но виджет не будет обновляться. Если я не удаляю его и не включаю другой виджет. Mark Ismail

Ваш Ответ

2   ответа
2

Android остановит ваш виджет, когда он сталкивается с нехваткой памяти. Затем он автоматически перезагрузит ваш домашний виджет после очистки оперативной памяти. Но на этот раз ваш домашний виджет получит другой pid от последнего, поэтому он не может ответить на трансляцию.

Обновление виджета приложения с помощью AlarmManager

Спасибо, что я хотел знать. Большое спасибо Mark Ismail
Так что если виджет получит другой пид. Есть ли способ получить этот pid, чтобы трансляция обновляла виджет. Mark Ismail
0

Я должен был включить этот код в мой класс обслуживания. То, что он делает, он отправляет обновление каждому виджету. Прошло уже больше года, кнопка на моем виджете всегда работает, и виджет обновляется без проблем. Я публикую это в надежде, что это поможет кому-то с такой же проблемой. Мне потребовалось больше года, чтобы решить это.

int[] arrayOfInt = AppWidgetManager.getInstance(getBaseContext())
            .getAppWidgetIds(new ComponentName(this, mywidget.class));
    AppWidgetManager localAppWidgetManager = AppWidgetManager
            .getInstance(this);

    new WebView().onUpdate(getBaseContext(), localAppWidgetManager,
            arrayOfInt);
    int i = arrayOfInt.length;
    for (int j = 0;; j++) {
        if (j >= i)
            return;
        int k = arrayOfInt[j];
        RemoteViews localRemoteViews = new RemoteViews(getBaseContext()
                .getPackageName(), R.layout.xx);
        localRemoteViews.setTextViewText(R.id.tv, tv_text);
        localRemoteViews.setOnClickPendingIntent(R.id.Button01,
                PendingIntent.getActivity(getBaseContext(), 0, new Intent(
                        getBaseContext(), LicenseCheck.class), 1));
        localAppWidgetManager.updateAppWidget(k, localRemoteViews);
    }

Похожие вопросы