2013-10-23 69 views
0

我有一个很好的数字小工具时钟! 但这里的问题是,它不更新我的意思是它只是显示那一刻,我添加到主屏幕的时间!问题与更新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 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> 

所以任何帮助?

预先感谢

回答

2

万一有人绊倒过这个问题。

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

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

似乎在不到30分钟时间段的情况下被设置,它会做的第一次更新(这是默认的情况下,所谓的正在提供任何配置活动),但会要求未来的更新这是最短时间30分钟后。