0

Runnableを使用してTextViewテキストを更新することで時計を作成しました。アクティビティにいるとき、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();
    }
4

1 に答える 1

3

それほど単純ではないかもしれませんが、mClockStoppedをtrueに設定すると、runnableのrun()が終了します。

あなたは電話する必要があります

mClockStopped = false; 
mTicker.run();

onResume

于 2013-03-13T09:51:41.693 に答える