0

しばらくしてから関数を呼び出すことができるが、スレッドはまだ実行されているはずの遅延を作成する方法。これより良い方法はありますか?

new Thread(new Runnable() { 
    public void run(){
        try{ Thread.sleep(recordtime); }
        catch(Exception e){}

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                reset();
            }
        });
    }
}).start();
4

1 に答える 1

1

Ui スレッドでコードを実行するには、少し遅れてから次のようにします。

   Handler h = new Handler(Looper.getMainLooper());

    Runnable r = new Runnable() {
        @Override
        public void run() {
            //--code run in Main, UI thread  
        }
    };

    h.postDelayed(r,2000); //-- run after 2 seconds

ハンドラーには、Looperターゲット スレッドが必要です。UI スレッドには既にそれがあります。他のスレッドを最初に構成する必要があります。

その他のオプションは次のとおりです。

タイマー

  Timer t = new Timer();

    t.schedule(new TimerTask() {
        @Override
        public void run() {
           //--code run in separate thread  
        }
    },2000);

そしてScheduledExecutorService :

    ScheduledExecutorService se = Executors.newSingleThreadScheduledExecutor();

    se.schedule(new Runnable() {
        @Override
        public void run() {
            //--code run in separate thread
        }
    },2, TimeUnit.SECONDS);
于 2013-08-24T18:14:05.587 に答える