当子线程执行完,提交到主线程执行代码(UIUtils)
来源:互联网 发布:淘宝婴童装主营怎么写 编辑:程序博客网 时间:2024/05/16 14:32
/**
* 在主线程中 执行代码
*
* @param runnable
*/
public static void runOnUiThread(Runnable runnable) {
// 如果在主线程中运行 直接运行 如果没有在 提交一个handler
if (isRunUIThread()) {
runnable.run();
} else {
executeTask(runnable);
}
}
/**
* 可以执行一个任务
*
* @param runnable
*/
public static void executeTask(Runnable runnable) {
getHandlder().post(runnable);
}
/**
* 延时执行的异步任务
*
* @param runnable
* @param delayMillis
*/
public static void executeDelay(Runnable runnable, long delayMillis) {
getHandlder().postDelayed(runnable, delayMillis);
}
private static Handler getHandlder() {
return MyApplication.getHandler();
}
/**
* 判断程序是否在主线程当中运行
*
* @return
*/
public static boolean isRunUIThread() {
// myPid 当前的进程 myUid 当前的用户 myTid 当前的一个线程
return android.os.Process.myTid() == getMainThreadId();
}
private static int getMainThreadId() {
return MyApplication.getMainThreadId();
}
使用demo:
// 实际上和handler一样 执行完上面的方法 把接下来的代码提交到主线程来执行
UIUtiles.runOnUiThread(new Runnable() {
@Override
public void run() {
showPage();
}
});
取消一个异步任务:
/**
* 取消异步任务
*
* @param autoRunningTask
*/
public static void cancelTask(Runnable r) {
getHandlder().removeCallbacks(r);
}
使用方法:
@Override
public void run() {
//取消之前的任务
UIUtiles.cancelTask(this);
int currentItem = viewPager.getCurrentItem();
currentItem++;
// true 平滑的滑动到指定条目
viewPager.setCurrentItem(currentItem, true);
// this就是执行当前的任务 这是一个递归的过程
UIUtiles.executeDelay(this, delayMillis);
}
0 0
- 当子线程执行完,提交到主线程执行代码(UIUtils)
- java子线程全部执行完毕执行主线程代码
- 用Handler的post()方法来传递线程中的代码段到主线程中执行
- Java 主线程等待子线程执行完再执行
- Java 主线程等待子线程执行完再执行
- 子线程执行完后,主线程在执行场景
- c#子线程执行完怎么通知主线程
- c#子线程执行完怎么通知主线程
- c#子线程执行完怎么通知主线程
- C#子线程执行完后通知主线程
- C#子线程执行完后通知主线程
- 主线程等待子线程执行结束
- 子线程主线程循环交替执行
- spring线程池,全部执行完子线程在执行主线程
- 主线程等待子线程执行完毕后再执行
- JAVA主线程等待子线程执行完毕再执行
- Android先执行线程池后执行主线程
- Swift 3.0 在主线程执行代码
- linux下parted创建gpt分区
- 线程同步
- 异步式I/O与事件驱动--起步
- 欢迎使用CSDN-markdown编辑器
- 正则表达式的威力2_替换replaceAll()
- 当子线程执行完,提交到主线程执行代码(UIUtils)
- 代数-不等式
- 《第一行代码Android》学习日记17
- linux用gedit保存文件失败的解决办法
- 指针的基本问题
- MapReduce编程实例之自定义排序
- Linux下的tar压缩解压缩命令详解
- 最近做的一个安卓项目,里面有些比较实用的代码,整理一下,以备今后使用
- 40 For which two situations would you use functionality provided by the Resource Manager? (Choose tw