android线程的用法
2016-04-12 11:54
393 查看
在我们执行耗时任务的时候,经常会遇到ANR错误,在主线程中我们不能执行耗时操作,这时我们就应该开启一个线程,在线程中来执行耗时操作。下面我们看看怎么开启一个新的线程,以及最后我们怎样和主线程之间的信息交互。
在主线程中新建一个类,然后执行该类的start()方法,这样子线程就跑起来了!
都作为新手,可能也会犯一些错误:Handler对象的新建一定要在主线程中,子线程可以直接调用主线程的对象。
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 {以上就实现在子线程中更新主线程UI,子线程和主线程通信主要是通过Handler来传递信息。
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!");
}
}
}
都作为新手,可能也会犯一些错误:Handler对象的新建一定要在主线程中,子线程可以直接调用主线程的对象。
相关文章推荐
- Android studio常用设置-显示行号
- 【Android性能优化】布局的性能优化
- Android studio 踩坑指南
- Android用Double Array Trie (双数组)实现关键字的搜索
- Android性能优化总结二
- JVM Dalvik ART介绍
- Android 动画之TranslateAnimation应用详解
- Android_system_调用系统联系人拨打电话
- Android性能优化总结一
- Android Clipboard详解
- Android studio常用设置-鼠标悬停时显示tips帮助
- Android Textview实现文字颜色渐变效果
- android studio ndk 编译自定义MK文件
- Android WebView与JS的数据交互
- Android 自定义ViewGroup
- android.content.res.Resources$NotFoundException: String resource ID #0x3c
- Android Studio上面使用Ndk JNI 开发工程
- android ArrayAdapter 如何动态更改数据
- [置顶] Android studio 使用记录(持续更新)
- Android TextWatcher