您的位置:首页 > 移动开发 > Android开发

android线程的用法

2016-04-12 11:54 393 查看
在我们执行耗时任务的时候,经常会遇到ANR错误,在主线程中我们不能执行耗时操作,这时我们就应该开启一个线程,在线程中来执行耗时操作。下面我们看看怎么开启一个新的线程,以及最后我们怎样和主线程之间的信息交互。
class MyThread extends Thread{
@Override
public void run() {
//要执行的操作
System.out.print("Hello world!");
}
}
这样我们就新建了一个线程类,在该类的 run()方法中执行耗时操作。
MyThread myThread  = new MyThread();
myThread.start();

在主线程中新建一个类,然后执行该类的start()方法,这样子线程就跑起来了!

public class MainActivity extends Activity {

private static final int SEND_MASSAGE = 1;

TextView textview = null;
Handler handler = new Handler(){
public void handleMessage(Message msg) {
textview.setText("this is second textview!!");
};
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textview = (TextView) findViewById(R.id.tv);
MyThread myThread = new MyThread(); myThread.start();

}

class MyThread extends Thread{
@Override
public void run() {

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Message msg = new Message();
msg.arg1 = SEND_MASSAGE;
handler.sendMessage(msg);
//textview.setText("this is second textview!!");//会报错
System.out.print("Hello world!");
}
}

}
以上就实现在子线程中更新主线程UI,子线程和主线程通信主要是通过Handler来传递信息。

都作为新手,可能也会犯一些错误:Handler对象的新建一定要在主线程中,子线程可以直接调用主线程的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: