您的位置:首页 > 产品设计 > UI/UE

runOnUiThread简单应用

2016-03-29 11:38 429 查看
首先runOnUiThread是Activity内部的方法,在运用的时候最好指明当前环境变(Context).

new Thread(new Runnable() {

@Override

public void run() {

System.out.println(Thread.currentThread().getId());

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(RunOnUIThreadActivity.this, "UI操作...", 1000).show();

}

});

}

}).start();

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

new Thread(new Runnable() {

@Override

public void run() {

if(isClose)

return;

if(i!=0)

Toast.makeText(RunOnUIThreadActivity.this, i+"", 1000).show();

i++;

handler.postDelayed(this, 2000);

}

}).start();

}

上面两个其实原理一样,runOnUiThread这个会调用父类中的

public final void runOnUiThread(Runnable action) {

if (Thread.currentThread() != mUiThread) {

mHandler.post(action);

} else {

action.run();

}

}

首先判断是否是UI线程,不是的话就post,如果是的话就正常运行该线程.

只要经过主线程中的Handler.post或者postDelayed处理线程runnable则都可以将其转为UI主线程.再说Handler的机制就是来处理线程与UI通讯的.

new Thread() {
@Override
public void run() {
super.run();
for (File folder : folders) {
File[] files = folder.listFiles();
for (File file : files) {
if (file.getName().endsWith(".png")) {
final Bitmap bitmap = getBitmapFromFile(file);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
imageCollectorView.addImage(bitmap);
}
});
}
}
}
}
}.start();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: