我正在使用模拟时钟小工具,其中包含Textview
以显示日期编号。
它有效但日期(午夜之后)不会立即改变,它会在几分钟或几小时后改变。
我的更新周期是1000毫秒。
请帮助。
public class Clock_Actions extends AppWidgetProvider{
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
RemoteViews updateView = buildUpdate(context);
appWidgetManager.updateAppWidget(appWidgetIds, updateView);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
private RemoteViews buildUpdate(Context context) {
RemoteViews updateView = null;
Time time = new Time();
time.setToNow();
updateView = new RemoteViews(context.getPackageName(), R.layout.main);
updateView.setTextViewText(R.id.Date, new Integer(time.monthDay).toString());
Intent launchIntent = new Intent();
launchIntent.setComponent(new ComponentName("com.android.deskclock", "com.android.deskclock.DeskClock"));
launchIntent.setAction(Intent.ACTION_MAIN);
launchIntent.addCategory(Intent.CATEGORY_LAUNCHER);
launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
PendingIntent intent = PendingIntent.getActivity(context, 0, launchIntent, 0);
updateView.setOnClickPendingIntent(R.id.analogClock2, intent);
return updateView;
}
}
答案 0 :(得分:0)
首先,由于规范,Android并不会每30分钟拨打onUpdate不到1次,因此,1000毫秒无法正常工作。
其次,你正在做什么非常非常耗电,你的小部件会在这个刷新时间内耗尽你的电池,但要显示数据,时间等你必须使用TextClock
http://developer.android.com/reference/android/widget/TextClock.html
所以,相反,数据(我认为它是一个TextView)你应该写
<TextClock
android:id="@+id/Data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:timeZone="GMT+0800"
android:format24Hour="MMM dd, yyyy k:mm"
android:format12Hour="MMM dd, yyyy k:mm" />
android:format24Hour和android:format12Hour与用户使用的数据格式有关,你可以通过格式定义你想看到的内容
http://developer.android.com/reference/java/text/DateFormat.html
TextClock不需要从代码更新,而且不是电池密集型