android 线程辅助处理类(用于在主线程和其他线程中执行逻辑)

2023-11-03 06:58

本文主要是介绍android 线程辅助处理类(用于在主线程和其他线程中执行逻辑),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

// 1、在主线程执行逻辑—— 一般为涉及UI界面控件的处理逻辑
ThreadTool.RunInMainThread(new ThreadPram()
{@Overridepublic void Function(){// TODO Auto-generated method stub// 在主线程执行逻辑}
});// 2、在新的线程中执行逻辑—— 网络请求要求在非主线程中调用
ThreadTool.RunInCachedThread(new ThreadPram()
{@Overridepublic void Function(){// TODO Auto-generated method stub// 在新的线程执行逻辑}
});// 3、判断当前是否为主线程
bool isUi = isUiThread();// 4、获取主Handler、当前Handler, Handler用于执行逻辑,或延时执行逻辑
getMainHandler()、getCurrentHandler()Handler..postDelayed(new Runnable()
{@Overridepublic void run(){param.Function();}
}, delayMillis);
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(){@Overridepublic 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(){@Overridepublic void run(){param.Function();}});}/** 在主线程中延时delayMillis毫秒,执行Function —— UI界面相关控件逻辑需在主线程中执行 */public static void RunInMainThread(final ThreadPram param, long delayMillis){getMainHandler().postDelayed(new Runnable(){@Overridepublic void run(){param.Function();}}, delayMillis);}/** 在其他线程执行Function —— 网络请求需在主线程之外的其他线程执行 */public static void RunInCachedThread(final ThreadPram param){Executors.newCachedThreadPool().execute(new Runnable(){@Overridepublic 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());}}

 
 

 

 

这篇关于android 线程辅助处理类(用于在主线程和其他线程中执行逻辑)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336393

相关文章

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多