多线程的学习和使用多线程的学习和使用一直是学习一门语言的重点和难点

那么Android使用Java语言进行开发,理所当然支持Java创建线程的方法,只不过在使用过程中需要注意防止主线程ANR的不良用户体验。

  • 马上学Android 031 - Android启动子线程的三种方式

(视频在发布的时候,解析有些错误,导致视频有些地方没有声音和画面,大家见谅!)

在Java中创建使用主线程的方式主要有两种,第一种是类继承Thread重写run方法,第二种是实习Runnable接口并重写run方法。当然创建的方式和书写风格有多种多样。

在Android子线程是不能更改UI界面的内容,否则程序会崩溃,如果要在子线程中更改UI的话需要采用异步消息处理机制,主要使用到Handle。

  • Android使用线程方式一:创建一个类继承Thread
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private class LoadingThread extends Thread{
@Override
public void run() {
//执行耗时操作
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//创建消息对象
Message msg = new Message();
//设置消息常量
msg.what = STOP;
//发送消息
handler.sendMessage(msg);
}
}

然后再需要启动线程的地方创建对象并执行start方法

1
2
3
LoadingThread loadingThread = new LoadingThread();
//开启线程
loadingThread.start();
  • Android使用线程方式二:新建一个Thread对象,在构造函数中传入一个实现Runnable接口对象,并执行start方法
1
2
3
4
5
6
7
8
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
//线程执行内容
}
});
//开启线程
thread.start();
  • Android使用线程方式三:直接让Activity实现Runnable接口,这样的方式是方式二的简化。
1
2

public class ThreadTutorialActivity extends Activity implements Runnable

然后再Activity中重写run方法

1
2
3
4
5
6

@Override
public void run() {
//执行线程操作

}

最后在需要启动线程的地方传入this对象即可构造一个线程对象。

1
2
3
Thread t = new Thread(ThreadTutorialActivity.this);
//启动线程
t.start();

Android除了支持Java的多线程机制还支持其他比如AsyncTask异步任务和Loader异步加载的方法,这些知识点后面会再次讲到,感兴趣的可以先了解一下。