活动暂停时,Runnable停止

时间:2013-03-13 09:47:08

标签: android runnable

我通过使用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();
    }

1 个答案:

答案 0 :(得分:3)

也许不那么简单,但将mClockStopped设置为true会使runnable的run()退出。

你应该致电

mClockStopped = false; 
mTicker.run();

onResume