安卓开发学习——第八天
1.消息机制的引入
1)在android中,只有在UIThread中才能直接更新界面
2)在android中,长时间的工作(联网)都需要在workerThread中执行
3).在分线程获得服务器数据后,需要立即到主线程去更新界面显示数据
如何实现线程间通信呢?
消息机制:Handler+Thread
异步任务:AsyncTask==Handler+ThreadPool
2.Message的使用:线程间通信的数据载体
1).对象的创建
Message.obtain();
2)对象的使用
int what //标识
int args1 //用户保存int数据
int args2 //用户保存int数据
Object obj //用户保存对象数据
Handler target //保存处理消息的handler
long when //消息应该被处理的时间
Message next //有了此属性Message就可以形成队列
static Message pool //消息池,缓存用过的消息用于复用
Runnable callback //用于处理当前消息的回调器
3.Handler的使用:发送/处理/移除消息
1)对象的创建:new Handler();
2)对象的使用:
a.发送消息
发即时消息:sendMessage(Message message)
发延迟消息:sendMessageDelayed(Message message,long delayTime)
发即时空消息:sendEmptyMessage(int what)
发延迟空消息:sendEmptyMessageDelayed(int what,long delayTime)
b.处理消息
void handleMessage(Message msg)
c.移除消息
removeMessage(int what) //移除未处理的指定what的message
removeCallbacksAndMessages(null); //移除所有未处理的消息
4.消息机制的原理
Handler用于做什么工作?
1.线程间通信(分线程间切换到主线程运行)
2.延迟的工作
3.循环定时工作
5.AsyncTask的使用
1).理解
a.在没有它之前我们可用Handler+Thread实现一个异步任务的功能
b.使用AsyncTask也可以,为什么要用它?
1.编码简洁:填空题与问答题的区别
2.运行效率高:线程池
2).相关API
6.AsyncTask的基本原理
7.Json数据格式和解析
1).Json是什么?
a.有特定格式的字符串
b.用于客户端与服务器的数据交互的一种数据格式
c.与XML比较的优势?
小,简洁
省流量/响应快
2).Json数据格式
3).如何解析Json?
JSONBbject: {}
JSONArray: []
Gson
String toJson(Object obj)
T fromJson(String json,Type/Class type)
8.图片的三级缓存技术
1).图片的三级缓存
①.第一级:内存中Map <String,Bitmap> key为url,value为图片对象
②.第二级:SD卡 图片文件 /storage/sdcard/Android/data/packageName/files/
③第三级:服务器端 图片文件
2).如何根据图片URL显示图片
①根据URL从一级缓存中取出对应的Bitmap对象,
如果有,直接显示
如果没有进入②
②根据URL从二级缓存中得到Bitmap对象(从URL中取出文件名到files文件夹下加载图片文件)
如果有,直接显示,并保存到一级缓存
如果没有进入③
③根据URL请求服务器(三级缓存)获取Bitmap对象,需要启动分线程请求,显示代表正在加载的图片
如果有
1).显示图片
2).保存到一级缓存
3).保存到二级缓存
如果没有
显示代表错误的图片