首页 > 编程知识 正文

android多线程并发(多进程多线程应用场景)

时间:2023-05-04 01:16:30 阅读:69711 作者:2615

当我们启动APP时,安卓系统将启动Linux Process。 此流程包含名为UI Thread或Main Thread的Thread。 工作日一个APP应用程序的所有组件都在章节1中运行吗? 当然,Process允许您通过进程修改Manifest.xml中代码块()的android:Process属性,并指定它在不正确的Process中运行。 如果某个组件启动时该进程已不存在,则该组件将直接通过名为process的进程启动,并在该进程的UI Thread中运行。

在UI Thread中,执行了系统的问题处理、用户输入问题处理、UI描绘、Service、Alarm等很多重要逻辑。 下图:

UI Thread包含的逻辑

我们编写的代码内置在这些逻辑的中心,包括检测和响应用户触摸、用户输入的处理和自定义视图的绘制。 如果我们插入的代码价格相对耗时,则收集请求或捕获数据库会堵塞UI线程的其他逻辑的履行,导致除夕夜接口纸箱。 不雅行为超过5秒时,系统报告ANR的缺点。 所以,要履行耗时的操作,就必须启动另一个线程来履行。

新线程执行耗时的逻辑后,往往需要将连接反馈到接口并更新UI。 安卓的UI工具包不是线程安全的,没有必要在非UI线程上更新UI。 所有接口的更新都必须在UI线程上进行。

Android提供了四种常用的处理多线程的方法。 分别为:

1. Handler Thread

2 .同步任务

4. IntentService

下面就四种方法进行说明。

Handler Thread

Android的主线程包含消息队列“消息队列”,它可以存储在一组消息或Runnable对象中。 可以通过进程处理程序将消息或Runnable对象发送到此消息队列并处理这些对象。 每次创建新的Handle对象时,它都会绑定到所创建的线程,即UI线程及其消息队列。 从除夕晚上开始,此handler将消息对象或Runnable对象传递到消息队列,并在它们退出队列时开始履行。

Handler Thread逻辑图

Handler可以将消息对象或Runnable对象推入消息队列,以便在UI线程中检索消息或履行Runnable对象。 Handler有两种方法可以推入消息队列:开机自检和发送消息。

开机自检方法:

开机自检许可证将Runnable对象入队到消息队列中。 其方法如下

开机自检(runnable ) /开机时间(runnable,long ) /开机延迟(runnable,long ) )。

对于handler post方法,将Runnable对象传递到消息队列,然后在该Runnable对象中重写run () )方法。 通常,此run ) )方法需要在UI线程上进行操作。

2 .可以通过进程取消的方法取消未完成的同步任务

handler开机自检的使用方法

sendMessage许可证允许将包含消息数据的消息对象推入消息队列。 该方法是sendemptymessage(int )/sendmessage )/sendmessageattime (消息,长期)/sendmessagedelayed (消息延迟) )。

如果应用sendMessage方法将消息入队到消息队列中,则Handler必须传递消息对象。 此外,Handler还需要重写handleMessage ) )方法以获取工作线程传递的消息。 此方法在UI线程上执行。 由于消息是final类,因此yydmla将持续。

处理程序定义

如何使用handler sendMessage

优缺点

1. Handler的使用方法容易理解,可以将多个异步义务下更新UI的代码集中在一起,使其容易理解

实用范围

1 .更新多个异步义务UI

AsyncTask是一个由android提供的轻量级异步类,它允许AsyncTask保持原样,在类中实现异步操作,并向接口反馈当前异步完成的程度(通过进程接口可以再现UI进度更新)

AsyncTask存储应通过进程的一个拥塞队列阻塞查询履行的义务,并应用静态线程池THREAD_POOL_EXECUTOR提供必需的线程量,默认为128个。 Android 3.0之前默认采用并行义务履行器,3.0之后更改为默认采用串行义务履行器,通过流程静态串行义务履行器SERIAL_EXECUTOR控制义务串行履行,并进行循环检索。

使用案例: classdownloadtaskextendsasynctask {

//同步任务

//后尖括号内分别为参数(例中为线程的休息时间)、进度)、返回类型

@Override

protectedvoidonPreExecute (

//最初的履行方法

super.onPreExecute (;

建议您阅读

应用分层可能仍然是一些小技术,但其有用性得到了人们的广泛赡养。 通过分层APP应用程序,一些IT管理员可以准确识别哪些人需要应用特定的APP应用程序,并直接提供APP应用程序。 因为这个新技巧我还在仔细阅读

地址: http://www.17 bianji.com/lsqh/34818.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。