---【线程与异步分析】
Achillisjack
这个作者很懒,什么都没留下…
展开
-
线程池分析
1,线程池当进程中线程较少时,可以手动去新建thread。但是如果大量的线程会使进程管理很混乱,并且不断的创建销毁线程影响性能。在此情况下,线程池诞生了。线程池优点如下,减少创建和销毁线程的次数,每个工作线程可以多次使用可根据系统情况调整执行的线程数量,防止消耗过多内存。2 ThreadPoolExecutor2.1 构造方法AsyncTask构造ThreadPoolExe原创 2017-03-01 21:57:08 · 324 阅读 · 0 评论 -
android 中CountDownTimer类源码分析
1, 概述CountDownTimer从字面理解就是倒计时器,每隔固定的时候可以触发onTick方法,主要应用于倒计时和周期的执行特定的事情,控制灵活多变。2, CountDownTimerCountDownTimer是一个抽象类,有2个抽象方法, onTick和onFinishpublic abstract void onTick(long millisUntilFinished原创 2017-04-15 19:15:07 · 521 阅读 · 0 评论 -
android 中Timer类源码分析
1, 概述Timer和TimerTask主要用于在固定的每隔一段时间执行某一个任务。在平时开发时使用广泛,使用简单。Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中有一个抽象方法run(),类似线程中的run()方法。开发方法:开始运行Timer mTimer = new Timer();mTimer.schedule(new TimerT原创 2017-04-15 19:10:12 · 1127 阅读 · 0 评论 -
android 中Chronometer类源码分析
1, 概述Chronometer在平时开发时使用广泛,使用简单, 只需要调用三个简单的方法就可以。2, ChronometerChronometer是TextView的子类,这个组只能以1秒的时间间隔进行计时,并显示出计时结果。使用Handler来实现。2.1 开发方法Chronometer开发很简单,private Chronometer timer;time原创 2017-04-15 18:40:08 · 1230 阅读 · 0 评论 -
android 线程的状态
1,线程1.1线程的状态线程在它的生命周期中可能处于以下几种状态之一:· New(新生):线程对象刚刚被创建出来;· Runnable(可运行):在线程对象上调用start方法后,相应线程便会进入Runnable状态,若被线程调度程序调度,这个线程便会成为当前运行(Running)的线程;· Blocked(被阻塞):若一段代码被线程A”上锁“,此时线程B尝试执行这段代码原创 2017-02-22 22:24:08 · 4783 阅读 · 0 评论 -
子线程与主线程之间的通信
1, 进程和线程通俗的讲, 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.进程和线程的主要差别在于它们是不同的操作系统资源管理方式。1,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。2,线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等原创 2017-02-22 22:22:33 · 4909 阅读 · 0 评论 -
HandlerThread分析
1, 引言一般情况下Android中新诞生的线程是没有开启消息循环的。主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环。 Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。然后通过Looper.loop() 让Looper开始工作,从消息队列里取消息,处理消息。如果想在子线程开启消息循环呢?Cl原创 2017-02-22 22:06:30 · 309 阅读 · 0 评论 -
handler机制分析之二
5, MessageQueue C/C++/system/core/include/utils/Looper.h/system/core/libutils/Looper.cpp/frameworks/base/core/jni/android_os_MessageQueue.h/frameworks/base/core/jni/android_os_MessageQueue.cp原创 2017-02-22 22:01:06 · 416 阅读 · 0 评论 -
Handler机制分析之一
1, 基本概念Handler主要做什么?机制是怎样的?有其他相同或者类似的机制吗?我们知道,Binder主要用于跨进程通信,Handler呢?主要用于进程内部进行通信,或者说进程内部不同线程之间进行通信,即是不同线程之间互相发送消息。 额外知识:libcore/libart/src/main/java/java/lang/Thread.javalibcore/luni/sr原创 2017-02-22 21:52:31 · 354 阅读 · 0 评论 -
LoaderManager源码分析之二
4, LoadTask三部曲LoadTask继承AsyncTask类,重写了doInBackground/ onPostExecute/ onCancelled三个方法,但是并没有重写onProgressUpdate,所以并不能更新进度信息。 4.1, doInBackgrounddoInBackground方法运行于线程池的线程中。流程图如下,Cursor原创 2017-03-01 22:35:35 · 474 阅读 · 0 评论 -
LoaderManager源码分析之一
1, 基本概念LoaderManager从名字来看,就是异步任务的意思。LoaderManager是一个抽象类定义如下,public abstract class LoaderManager {还包含一个接口,有三个方法,public interface LoaderCallbacks { public Loader onCreateLoader(int id,原创 2017-03-01 22:32:07 · 504 阅读 · 0 评论 -
AsyncTask源码分析之二
5,线程切换和管理5.1,线程切换AsyncTask中4个方法执行所在的线程如下,是如何切换的呢?onPreExecute //主线程,执行任务之前的一些UI操作doInBackground //子线程,执行任务onProgressUpdate // 任务执行时更新进度信息onPostExecute // 主线程,任务完成时更新UI利用内部类Inter原创 2017-03-01 22:08:29 · 214 阅读 · 0 评论 -
AsyncTask源码分析之一
论述了AsyncTask的基本原理,给出了AsyncTask结构的调用流程图,概述了线程池,最后比较了AsyncTask和Handler异步任务的优点和不足。原创 2016-10-21 19:22:33 · 709 阅读 · 0 评论 -
AsyncQueryHandler分析
作用: 对DB数据库进行异步操作,加快其数据处理的速度. 例如几千联系人的数据读取,按正常的处理速度会非常的慢,使用AsyncQueryHandler,这就会大大的加快速度,增加用户的良好体验。为什么会有AsyncQueryHandler?1,若不用AsyncQueryHandler,直接在UI 线程调用ContentResolve去操作数据库,比如查询.如果数据库的数据很少,无需原创 2017-09-13 19:16:42 · 397 阅读 · 0 评论