2013-10-23 96 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分鐘後。