Yar*_*lyk 38 java multithreading android handler
我想在后台线程中运行一些Runnable.我想使用Handler,因为它很方便延迟.我的意思是
handler.post(runnable, delay);
其中runnable应该在后台 Thread中运行.是否可以创建这样的Handler?在某处有"背景"Looper或者我该如何创建它?
PS我知道如何使用自定义类扩展Thread,但它需要比处理程序方式更多的编码工作.所以请不要发布其他解决方案或类似的东西
handler.post(new Runnable() {
    @Override
    public void run() {
        new Thread() {
            @Override
            public void run() {
                //action
            }
        }.start();
    }
});
如果Handler能够以"干净"的方式做到这一点,我就会徘徊.
Him*_*wal 69
你可以这样做:
private Handler mHandler;
private HandlerThread mHandlerThread;
public void startHandlerThread(){
    mHandlerThread = new HandlerThread("HandlerThread");
    mHandlerThread.start();
    mHandler = new Handler(mHandlerThread.getLooper());
}
然后调用:
mHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
          // Your task goes here
        }
    },1000);
你可以尝试这样的事情
    private void createHandler() {
        Thread thread = new Thread() {
            public void run() {
                Looper.prepare();
                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                       // Do Work
                        handler.removeCallbacks(this);
                        Looper.myLooper().quit();
                   }
                }, 2000);
                Looper.loop();
            }
        };
        thread.start();
    }
您可以使用Looper.prepare()和在后台线程中设置Looper Looper.loop.