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(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();
相关文章推荐
- IOS开发之UITableView的奇技
- 相关query挖掘
- ndk-build 编译多个CPU架构的动态链接库
- Front-End-Develop-Guide
- 分享一个基于ligerui的系统应用案例ligerRM V2(权限管理系统)(提供下载)
- NDK Build 用法(NDK Build)
- UITabBar
- iOS UITabBarController tabbar 自定义 详解
- StringBuffer跟StringBuilder的区别
- 视图中的调用者权限控制bequeath current_user
- hdoj 1242Rescue
- APUE学习:进程环境
- EasyGUI基础教程
- Thinkpad E500在UEFI+GTP分区方案U盘安装Windows Server 2008 R2
- iOS开发笔记--UITableViewCell的选中时的颜色及tableViewCell的selecte与deselecte
- UILable自适应字体大小、自适应lable宽高
- 比如xib中设置设置一个UI控件的属性
- POJ Building a Space Station 2031 (最小生成树+三维空间)
- UI小图标
- IOS UIToolBar