我有一个带有两个TextView的小部件,显示时间和日期。
我只想让这批代码每秒都发生一次:
views.setOnClickPendingIntent(R.id.rl, pendingIntent);
java.util.Date noteTS = Calendar.getInstance().getTime();
String time = "kk:mm";
String date = "dd MMMMM yyyy";
views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS));
views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS));
所以我需要一种简单的方法来在窗口小部件中定期更新TextView,这样时间变化超过标准的30分钟。感谢
答案 0 :(得分:7)
您可以创建Handler
和Runnable
,然后让Handler
按指定的时间间隔重新启动Runnable
。你的程序可能如下所示:
private Handler mHandler = new Handler();
@Override
public void onResume() {
super.onResume();
mHandler.removeCallbacks(mUpdateClockTask);
mHandler.postDelayed(mUpdateCLockTask, 100);
}
@Override
public void onPause() {
super.onPause();
mHandler.removeCallbacks(mUpdateClockTask);
}
private Runnable mUpdateClockTask = new Runnable() {
public void run() {
updateClock();
mHandler.postDelayed(mUpdateClockTask, 1000);
}
};
并在updateClock()
内部执行所有UI更新。我想这一切都发生在Activity
内,并进行了适当的onPause()/onResume()
调用。
答案 1 :(得分:1)
你必须使用AlarmManager,查看本教程了解详情:http://www.vogella.com/articles/AndroidWidgets/article.html#widget_update别忘了检查这部分:
<强> 8。教程:通过服务更新小部件
答案 2 :(得分:1)