0
我通過使用Runnable更新TextView文本來完成時鐘。當我在活動中時,TextView會被正確更新,但是當我離開並返回活動時,run()
方法中的代碼不再執行。當活動暫停時Runnable停止
我需要在我的活動onResume
中再次撥打run()
嗎?爲什麼? 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();
}
我會說這是因爲你的run()方法退出,如果mClockStopped標誌設置:-) – fedepaol 2013-03-13 09:50:09
不是一個明智的屁股,但如果你實際上自己編寫代碼,你會知道這個問題是@fedepaol建議的。這應該是一個提醒,不僅僅是從別人那裏盲目複製代碼;-) – Darwind 2013-03-13 09:58:34
好吧,'return'退出該方法!謝謝 :) – jul 2013-03-13 10:02:51