使用AsyncTask在后台线程上运行代码
Android禁止任何主线程网络连接行为。
线程是个单一执行序列。单个线程中代码会逐步执行。Android应用都是从主线程(UI线程)开始的,然而,主线程不是线程那样的预定执行序列。相反,它处于一个无限循环的运行状态,等待着用户或系统触发事件的发生。
AsyncTask工具类
Gson能自动把数据映射为Java对象。
Looper、Handler和HandlerThread
消息循环由线程和looper组成。Looper对象管理着线程的消息队列。主线程就是个消息循环,因此也拥有looper。looper(准备looper时,使用HandlerThread类)不断从消息队列中抓取消息,然后完成消息指定的任务。
消息是Message类的一个实例,它有好几个实例变量,其中有三个需要在是实现时定义。(1)What:用户定义的int型消息代码,用来描述信息。
(2)obj:随消息发送的用户指定对象。
(3)target:处理消息的Handler。
Message的目标是Handler类的一个实例。Handler可看做message handler的简称。创建Message时,它会自动与一个Handler相关联。Message待处理时,Handler对象负责触发消息处理事件。
Handler还是创建和发布Message的接口。
Looper拥有Message收件箱,所以Message必须在Looper上发布和处理。一个Handler仅与一个Looper关联,一个Message也仅与一个目标Handler相关联。Looper拥有整个Message队列。多个Message可以引用同一目标Handler。
多个Handler也可与一个Looper相关联。