Android小部件更新期间米勒不工作

我是一个新的Android开发人员试图编码一个小部件..“updatePeriodMillis”参数告诉小部件在给定的duraion后调用onupdate方法,但它不会发生,所以我….

可以请一些人指出我的错误..这里是我的文件

SRC / hellowidget.java

package de.thesmile.android.widget; import android.appwidget.AppWidgetProvider; import java.util.Random; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.widget.RemoteViews; public class HelloWidget extends AppWidgetProvider { int number =0; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { number = (new Random().nextInt(100)); for (int appWidgetId : appWidgetIds) { RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.main); views.setTextViewText(R.id.TextView01, String.valueOf(number)); appWidgetManager.updateAppWidget(appWidgetId, views); } } } 

XML / hello_widget_provider.xml

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

main.xml中

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:orientation="vertical" android:layout_gravity="center" android:layout_height="wrap_content"> <TextView android:text="@+id/TextView01" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView><TextView android:padding="10dip" android:layout_marginTop="5dip" android:layout_gravity="center_horizontal|center" android:text="@string/widget_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/widget_textview" android:textColor="@android:color/black"></TextView> </LinearLayout> 

Android清单

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.thesmile.android.widget" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <!-- Broadcast Receiver that will process AppWidget updates --> <receiver android:name=".HelloWidget" android:label="@string/app_name"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/hello_widget_provider" /> </receiver> </application> <uses-sdk android:minSdkVersion="7" /> </manifest> 

Solutions Collecting From Web of "Android小部件更新期间米勒不工作"

小部件的更新时间被强制至less30分钟,以避免编程小部件干燥电池。 使用AlarmManager来克服这个(见这篇文章 )。

updatePeriodMillis属性定义App Widget框架通过调用onUpdate()callback方法从AppWidgetProvider请求更新的频率。 实际更新不能保证按照这个值准确发生,我们build议尽可能不要频繁更新 – 也许每小时不要超过一次,以节约电池。

如果,你需要更频繁地更新(即你的情况下1秒,这是不build议的)。 为此,请使用AlarmManager设置您的AppWidgetProvider收到的Intent的警报。 将报警types设置为ELAPSED_REALTIME或RTC,只有在设备唤醒时才会发出报警。 然后将updatePeriodMillis设置为零(“0”)。