3

これはアンドロイドでどのように行うことができますか?

public final Timer timer = new Timer(10, new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {  
          // Do task here       
        }
    });

timer.start(); を呼び出せるようにする必要があります。タイマーが入っているアクティビティから。

4

4 に答える 4

9

ほとんどの場合、Timer の代わりに Handler を使用する方がはるかに優れています。ハンドラーは遅延メッセージを送信できます。Handler を使用する利点は次のとおりです。

  • メイン(UI)スレッドで実行されます->ビューにアクセスできます(ビューに直接アクセスできないタイマーとは異なります)
  • 必要に応じて、保留中の遅延メッセージを削除できます
  • 少ないコード

例:

class MyActivity extends Activity {

    private static final int DISPLAY_DATA = 1;
    // this handler will receive a delayed message
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            // Do task here
            if (msg.what == DISPLAY_DATA) displayData();
        }
 };

 @Override
 void onCreate(Bundle b) {
     //this will post a message to the mHandler, which mHandler will get
     //after 5 seconds
     mHandler.sendEmptyMessageDelayed(DISPLAY_DATA, 5000);
 }
}
于 2012-07-29T10:49:48.853 に答える
4

次のようなことを試してください:

// this will run when timer elapses
TimerTask myTimerTask = new TimerTask() {

    @Override
    public void run() {
        // ...
    }

};

// new timer
Timer timer = new Timer();

// schedule timer
timer.schedule(myTimerTask, delayInMs);

タスクをアクティビティのメイン スレッドで実行する場合は、次のように変更します。

// get a handler (call from main thread)
final Handler handler = new Handler();

// this will run when timer elapses
TimerTask myTimerTask = new TimerTask() {
    @Override
    public void run() {
        // post a runnable to the handler
        handler.post(new Runnable() {
            @Override
            public void run() {
                // ...
            }
        });
    }
};

// new timer
Timer timer = new Timer();

// schedule timer
timer.schedule(myTimerTask, delayInMs);
于 2012-07-29T10:27:49.173 に答える
4

Android にも素晴らしいCountDownTimerクラスがあります

于 2012-07-29T10:43:51.583 に答える
0

私は別の質問でこれに答えました。

TimerTask は避けたいと思います。大量に起動すると、管理が難しいだけでなく、パフォーマンスも低下します。

最近では、ほぼすべての時間ベースのタスクに をお勧めしHandlerます。

タイマー アプリケーションを参照してください

于 2012-10-27T21:32:42.087 に答える