OnUpdate NEVER called – Android Widget

Я слежу за различными учебниками по виджетам, таким как этот, и этот

Я пробовал адаптировать свой код к моим целям, и я попытался скопировать скопированную копию. Кажется, что бы я ни делал, мой виджет НИКОГДА не обновляется. Когда он помещается на главный экран, текст остается в виде Статического текста, с которым он был создан. Все, что мне нужно для этого приложения, это обновление 4 TextViews, которое будет содержаться в макете.

Код ниже в основном копируется из одного из учебных пособий. Я попытался отладить метод onUpdate, однако точка останова никогда не попадает.

Любая помощь была бы высоко оценена.

EDIT: я вернулся к гораздо более простой версии этого виджета, который я пытался в своих усилиях, и заменил код ниже кодом более простого виджета. Я внес изменения, предложенные CommonsWare, в мой манифест. К сожалению, проблема остается.

Мой основной .java-файл выглядит так:

public class NetStatWidget extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager manager, int[] appWidgetIds) { ComponentName thisWidget = new ComponentName(context, NetStatWidget.class); int[] widgetId = manager.getAppWidgetIds(thisWidget); RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.appwidget); remoteView.setTextViewText(R.id.textView0, "Hello"); manager.updateAppWidget(widgetId, remoteView); } } 

Мой манифест:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.stat" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name="NetStatWidget" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/providerinfo" /> </receiver> </application> </manifest> 

И моя информация о поставщике виджета:

 <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@layout/main" android:minWidth="146dip" android:minHeight="72dip" android:updatePeriodMillis="10000"> 

Solutions Collecting From Web of "OnUpdate NEVER called – Android Widget"

Ваш манифест ошибочен. Вы утверждаете, что у вас есть класс network.widget.AppWidgetProvider и AFAIK, вы этого не делаете. У вас есть network.widget.NetworkWidgetActivity класс network.widget.NetworkWidgetActivity . Вы должны использовать это в своем элементе <receiver> .

Также:

  • Замените this.getApplicationContext() и getApplicationContext() с помощью this

  • Если вы не планируете выполнять более серьезную работу в сервисе (ввод / вывод базы данных, сетевой ввод-вывод и т. Д.), onUpdate() том, чтобы просто переместить всю эту логику в onUpdate() и избавиться от службы, поскольку она на самом деле не покупает вас Здесь (и если вы собираетесь сохранить сервис, переключитесь на IntentService и избавитесь от stopSelf() так как это будет обработано для вас)

  • Пока вы запрашиваете 10-секундные обновления, минимальное эффективное updatePeriodMillis составляет 30 минут – просто имейте это в виду во время отладки

  • int[] widgetId похоже, не используется в NetworkWidgetActivity

  • onStart() в Service устарел на пару лет; onStartCommand() этого используйте onStartCommand()