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-секундные обновления, минимальный эффективный
updatePeriodMillis
30 минут-просто имейте это в виду при отладкеint[] widgetId
кажется, не используется вNetworkWidgetActivity
onStart()
наService
был устаревшим в течение нескольких лет; используйтеonStartCommand()
вместо