Android將任務拋到UI執行緒的幾種方法
阿新 • • 發佈:2019-02-10
有的時候,我們希望能將任務拋回到UI執行緒去做,比如修改介面。如果當前沒有處在UI執行緒,那應該怎麼把任務拋到UI執行緒去呢?
以下是Android系統提供的3個將任務拋回UI執行緒的方法
- Activity.runOnUiThread(Runnable)
- View.post(Runnable)
- View.postDelayed(Runnable, long)
例如,在某一個執行緒中,通過View.post()方法將任務拋回UI執行緒
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(bitmap);
}
});
}
}).start();
}
如果你不能判定,當前是不是UI執行緒,可以用如下兩個方法:
方法一:使用Looper類判斷,如果相等則是UI執行緒
Looper.myLooper() == Looper.getMainLooper()
方法二:通過檢視Thread類的當前執行緒
Thread.currentThread() == Looper.getMainLooper().getThread()