android 线程辅助处理类(用于在主线程和其他线程中执行逻辑)
2018-01-22 17:43
567 查看
package com.sc.tool; import java.util.concurrent.Executors; import android.os.Handler; import android.os.Looper; /** 线程辅助处理类,用于在主线程和其他线程中执行逻辑 */ public class ThreadTool { // 调用示例 public static void Example() { ThreadTool.RunInMainThread(new ThreadPram() { @Override public void Function() { // TODO Auto-generated method stub // 在主线程执行逻辑 } }); } //--------------------------------------------- /** 线程辅助处理类对象参数 */ public static abstract class ThreadPram { /** 需要在线程中执行的逻辑 */ public abstract void Function(); } /** 在主线程执行Function —— UI界面相关控件逻辑需在主线程中执行 */ public static void RunInMainThread(final ThreadPram param) { getMainHandler().post(new Runnable() { @Override public void run() { param.Function(); } }); } /** 在主线程中延时delayMillis毫秒,执行Function —— UI界面相关控件逻辑需在主线程中执行 */ public static void RunInMainThread(final ThreadPram param, long delayMillis) { getMainHandler().postDelayed(new Runnable() { @Override public void run() { param.Function(); } }, delayMillis); } /** 在其他线程执行Function —— 网络请求需在主线程之外的其他线程执行 */ public static void RunInCachedThread(final ThreadPram param) { Executors.newCachedThreadPool().execute(new Runnable() { @Override public void run() { param.Function(); } }); } /** 当前线程是否为主线程 */ public static boolean isUiThread() { return Thread.currentThread() == Looper.getMainLooper().getThread(); } /** 获取主线程Handler */ public static Handler getMainHandler() { return new Handler(Looper.getMainLooper()); } /** 获取当前线程Handler */ public static Handler getCurrentHandler() { return new Handler(Looper.myLooper()); } }
相关文章推荐
- 主线程负责交互(事件处理)和UI绘制(onDraw), 只能在主线程访问View, 其他线程不能直接访问View (Android)
- Android中为什么主线程更新UI,子线程执行耗时操作?
- Code Fragment-Android在其他线程可以使用方法在UI线程执行UI相关
- Android中通过其他线程更新主线程UI
- 搜集所有子线程结果给主线程然后再执行剩下逻辑的几种方式
- Android network:主线程将创建请求放入(请求)队列,处理线程每次取一个请求,进行处理(发送/读响应)
- Android中通过其他线程更新主线程UI
- 详解Android中用于线程处理的AsyncTask类的用法及源码
- 黑马程序员-多线程-在android开发中经常会遇到从子线程切换到主线程,但是频繁地切换会使代码变得很臃肿,也不好维护,想请教一下各位大牛都是怎么处理的?
- android软键盘收起的同时在其他控件做另外的逻辑处理
- Android中通过其他线程更新主线程U…
- 利用主线程与子线程间的消息通讯,实现任务处理队列.子线程中创建不会阻塞执行的窗口
- Android主线程等待子线程执行结果
- Android之Handler(主线程,自己线程,其他线程互发消息)
- 一个主线程下有多个子线程任务,主线程必须在100秒内将子线程执行的集合结果进行处理返回
- Android串口通讯,在线程里一直监听是否有消息发来,接收到消息到runOnUiThread处理跳转页面,页面跳转关闭之后,在发送消息尽然还会执行在打开页面?
- 如何执行耗时的逻辑处理并且不阻塞主线程
- Android中通过其他线程更新主线程UI
- 在WM下,获得当前路径处理和解决异常“Control.Invoke 必须用于与在独立线程上创建的控件交互。”
- 在Android中使用Handler和Thread线程执行后台操作