0

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

在 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>

所以有什么帮助吗?

提前致谢

4

1 回答 1

2

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

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

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

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

于 2014-01-25T19:14:13.547 回答