OnUpdate никогда не звонил-виджет Android
Я следил за различными учебниками виджетов, такими как этот и этот
Я попытался адаптировать их код к моим целям,и я попробовал прямо вставить копию. Кажется, независимо от того, что я делаю, мой виджет никогда не обновляется. Когда он помещается на главном экране, текст остается статическим текстом, с которым он был создан. Все, что мне нужно это приложение, это обновить 4 TextViews, которые будут содержаться в макете.
ниже код в основном копируется из одного из учебников. Я пробовал отлаживать метод onUpdate, однако точка останова никогда не попадает.
любая помощь была бы весьма признательна.
EDIT: я вернулся к гораздо более простой версии этого виджета, который я пытался ранее в моих усилиях, и заменил код ниже кодом для более простого виджета. Я внес изменения, предложенные CommonsWare в мой манифест. К сожалению, проблема остается.
мой главный .Ява файл выглядит так:
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">
1 ответов
манифест-это неправильно. Вы утверждаете, что у вас есть network.widget.AppWidgetProvider класс, и AFAIK, вы этого не делаете. У вас есть странное имя network.widget.NetworkWidgetActivity класса. Вам нужно использовать это в своем <receiver> элемент.
также:
заменить
this.getApplicationContext()иgetApplicationContext()Сthisесли вы не планируете делать более серьезную работу в службе (ввод-вывод базы данных, сетевой ввод-вывод и т. д.), рассмотрим просто перемещение всей этой логики в
onUpdate()и избавиться от сервиса, так как он не очень много покупает вам здесь (и если вы are чтобы сохранить службу, переключитесь наIntentServiceи избавиться отstopSelf()так как это обрабатывается для вас)пока вы просите 10-секундные обновления, минимальный эффективный
updatePeriodMillis30 минут-просто имейте это в виду при отладкеint[] widgetIdкажется, не используется вNetworkWidgetActivityonStart()наServiceбыл устаревшим в течение нескольких лет; используйтеonStartCommand()вместо