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