以周期性方式更新小部件TextView的简单方法

Tim*_*mmo 2 android widget textview android-widget

我有一个带有两个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));
Run Code Online (Sandbox Code Playgroud)

因此,我需要一种简单的方法来在窗口小部件中定期更新TextView,以便时间变化超过标准的30分钟.谢谢

len*_*nik 7

你可以创建HandlerRunnable,然后让它HandlerRunnable指定的间隔重新启动你.你的程序可能如下所示:

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);
    }
};
Run Code Online (Sandbox Code Playgroud)

updateClock()你内部你做所有的UI更新.我想这一切都发生在Activity适当的onPause()/onResume()调用中.