摘要:
AsyncTask是一个抽象类,通常继承这个抽象类需要指定如下几个泛型参数: 1. Params:启动任务时出入参数的类型 2. Progress:后台任务执行中返回进度值的类型 3. Result:后台执行任务完成后返回结果的类型 构建AsyncTask子类必须重现的方法: 1. doInB... 阅读全文
摘要:
android系统架构从下往上为linux内核层、运行库、应用程序框架层和应用程序层。 Linux Kernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。 Libraries和android Runntime: Libraries:即c/c++函数库部分,大多数都是... 阅读全文
摘要:
简单的说,Handler获取当前线程中的looper对象,looper用来存放从MessageQueue中取出的Message,再由Handler进行Message分发和处理,按照先进先出执行。 MessageQueue(消息队列):用来存放通过Handler发送的消息,通常附属于某一个创建它... 阅读全文
摘要:
我们之前都是使用sendMessage()方法来发送消息,使用handleMessage来处理消息的,今天我们来看另外一种方法,先看代码:package cn.lixyz.handlertest;import android.app.Activity;import android.os.Bu... 阅读全文
摘要:
ThreadLocal 往下看之前,需要了解一下Java的ThreadLocal类,可参考博文: 解密ThreadLocalLooper、Handler和MessageQueue 我们分析一下之前的这段代码,查看一下Handler机制中,Handle、Looper和MessageQueue之... 阅读全文
摘要:
概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟,清空之前对ThreadLocal的错误的认知!... 阅读全文
摘要:
之前的例子都是我们在子线程(WorkerThread)当中处理并发送消息,然后在主线程(UI线程)中获取消息并修改UI,那么可以不可以在由主线程发送消息,子线程接收呢?我们按照之前的思路写一下代码:package cn.lixyz.handlertest;import android.app... 阅读全文
摘要:
先看简单示例:点击按钮,2s之后,TextView改变内容。package cn.lixyz.handlertest;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import a... 阅读全文
摘要:
什么是Handler 之前说过了,Android不允许主线程(MainThread)外的线程(WorkerThread)去修改UI组件,但是又不能把所有的更新UI的操作都放在主线程中去(会造成ANR),那么只能单独启动一个子线程(WorkerThread)去处理,处理完成之后,将结果通知给UI主线程... 阅读全文
摘要:
Java中的线程1. 线程的两种实现方式 ①继承Thread类 ②实现Runnable接口 两者区别在于,Thread这个类的对象,代表的是一个线程,而Runnable的对象,代表的是线程体(也就是线程要执行的代码)。2.线程的生命周期 创建---调用start()进入就绪状态---抢占到CPU就开... 阅读全文