更新Android应用程序小部件的问题

时间:2013-10-23 14:36:27

标签: android android-appwidget

我有一个很好用的数字小部件时钟!!  但这里的问题是它没有更新我的意思是它只是显示我将其添加到主屏幕的那一刻的时间!!!

widget.java中的

: 我有这样的onUpdate:

Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i = 0; i < appWidgetIds.length; i++) {

    int appWidgetId = appWidgetIds[i];

然后在onUpdate内部我首先使用Time方法将小时和分钟作为字符串:

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();

int hour = today.hour;
String hh = Integer.toString(hour);

int minute = today.minute;
String mm = ":" + Integer.toString(minute);

然后我用位图在两个图像视图中显示了这两个字符串:

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

        views.setImageViewBitmap(R.id.imageView1, getFontBitmap(context, hh, Color.WHITE, 70));

        views.setImageViewBitmap(R.id.imageView2, getFontBitmap1(context, mm, Color.WHITE, 70));

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
} 

这是我的接收器清单:

      <receiver android:name="widget">
   <intent-filter>
       <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
   </intent-filter>
   <meta-data android:name="android.appwidget.provider"
       android:resource="@xml/widget"/>

这是我在res / xml中的widget.xml:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="288dp" 
    android:minHeight="144dp" 
    android:updatePeriodMillis="10000" 
    android:initialLayout="@layout/widget_layout">
</appwidget-provider>

所以有什么帮助?

提前致谢

1 个答案:

答案 0 :(得分:2)

万一有人偶然发现了这个问题。

我认为问题出在 android:updatePeriodMillis 中。更新允许的最短时间为30分钟,如果您需要更短的时间段,则必须将时间设置为“0”,然后实施自己的更新窗口小部件的方法,例如使用重复的 AlarmManager 即可。但请注意,AppWidget上的频繁更新可能会耗尽电池寿命,因此请谨慎使用,或者至少确保仅在设备未处于睡眠模式时才进行更新。

http://developer.android.com/guide/topics/appwidgets/index.html#MetaData

似乎在设置的时间段少于30分钟的情况下,它将执行第一次更新(默认情况下在没有提供配置活动的情况下调用)但是将在30分钟后请求下一次更新,这是最短时间。