移动平台应用软件开发多线程.PDF
文本预览下载声明
移动平台应用软件开发
多线程
主讲:张齐勋
zhangqx@
《移动平台应用软件开发》课程建设小组
北京大学
二零一五年
Android 中的多线程
• 主线程(Main Thread)
– 主要负责处理与UI相关的事件,如 :用户
的按键事件,用户接触屏幕的事件以及屏
幕绘图事 件,并把相关的事件分发到对应
的组件进行处理。所以主线程通常又被叫
做UI线 程。
• 子线程
负责除UI之外较费时的操作,如从网络上
下载数据,或者访问数据库
示例:ANR(Application is not
responding)
Ø 运行在主线程里的任何方法
都尽可能少做事情。
Ø 可能会产生阻塞的工作不要
放在主线程中。
线程的基本用法
class MyThread extends Thread{
@Override
public void run() {
Log.d(myapp,mythread is running);
}
}
new MyThread().start();
class MyThread implements Runnable{
@Override
public void run() {
Log.d(myapp, mythread2 is running);
}
}
MyThread mythread = new MyThread();
new Thread(mythread).start();
子线程中更新UI
• 只有UI线程才能直接操作UI控件。
• Android提供一种 异步消息处理机制。涉
及以下四个部分 :
– Handler;
– Message;
– MessageQueue;
– Looper;
代码示例
主线程增加Handler :
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
labelTimer.setText(逝去了 + msg.obj + 秒);
}
}
};
⼦线程的循环体中增加如下语句:
Message msg = new Message();
msg.obj = timer;
msg.what = 0;
handler.sendMessage(msg);
/Program/Android/2011/09/14/41806.shtml
出⾃:
思考
• 在天⽓预报项⺫中,如何将获取的⺴
UI
络数据显⽰在 界⾯上?
其他Android 多线程机制
• Android提一个工具类Async
显示全部