1

mHandlerをタイマーとして使用するアプリケーションがあります。これは正常に機能し、RunnableMuPdeteTimeTaskが機能します。コードは次のとおりです。

    mHandlerTime.removeCallbacks(mUpdateTimeOutTask);
                mHandlerTime.postDelayed(mUpdateTimeOutTask, delay_timeoutzz);   

...................................。

    private Runnable mUpdateTimeOutTask = new Runnable() {
           public void run() {
               Toast.makeText(getApplicationContext(), "TimeOut of session is reached! Session will be force closed!", Toast.LENGTH_LONG).show();
               new UploadTask().onCancelled();
                       }
        };

どうすればそれを止めたり、「遅延」の新しい意味を定義したいのでしょうか????

4

1 に答える 1

1

あなたは確かにこのようなことをすることができます、

2つの変数を取る、

boolean delayedAgain = false;
long newDelayedTimeFromNow=5000;

次に、実行可能な適用ロジックで、

Runnable  mUpdateTimeOutTask = new Runnable() {             
            @Override
            public void run() {
                if(delayedAgain)
                {
                    delayedAgain = false;
                    mHandlerTime.postDelayed(this, newDelayedTimeFromNow);  
                    return;
                }
                else
                {
                    // DO JOB ON TIME.
                }                   
            }
        };

そして今、あなたの別のタスクから、

if(somethingIsDone)
{
  delayedAgain = true;
  newDelayedTimeFromNow = 3000;
}
于 2012-04-06T12:31:43.713 に答える