我通过使用Runnable更新TextView文本来完成时钟。当我在Activity中时,TextView会正确更新,但当我离开并返回活动时,run()
方法中的代码不再执行。
我是否必须在我的run()
活动中再次致电onResume
?为什么? mTicker Runnable是否已停止?
MyActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler();
mTicker = new Runnable() {
public void run() {
if(mClockStopped) return;
long now = System.currentTimeMillis();
mCalendar.setTimeInMillis(now);
mClock.setText(DateFormat.format("kk:mm", mCalendar));
mClock.invalidate();
long upTime = SystemClock.uptimeMillis();
long next = upTime + (60000 - now % 60000);
mHandler.postAtTime(mTicker, next);
}
};
mTicker.run();
/* more stuff */
}
@Override
public void onResume()
{
super.onResume();
mClockStopped = false;
}
@Override
public void onPause()
{
mClockStopped = true;
super.onPause();
}
答案 0 :(得分:3)
也许不那么简单,但将mClockStopped设置为true会使runnable的run()退出。
你应该致电
mClockStopped = false;
mTicker.run();
在onResume