Android学习笔记:Android中的线程:MainThread 和 WorkerThread
2014-01-12 00:00
411 查看
摘要: Android中只有2种线程:MainThread 和 WorkerThread。 MainThread 又叫 UI线程,应用程序的UI都是运行在主线程中,除了MainThread之外的其他Thread都叫 WorkerThread。
Android中只有2种类型的线程:MainThread(主线程) 和 WorkerThread。
MainThread 又叫 UI线程,Android应用程序中所有UI相关的代码都是运行在主线程中的,除了MainThread之外的其它所有线程都叫 WorkerThread。
在主线程MainThread中可以启动其它线程(WorkerThread)做一些事情。
MainThread 和 WorkerThread 的关系:
a. Android所有UI相关的代码都是运行在主线程(MainThread)中的;
b. WorkerThread 从原则上来讲是不允许操作UI的(即操作主线程中的UI对象);
c. 但是有部分特殊的UI组件可以在WorkerThread中进行操作,比如:ProgressBar。
Android中只有2种类型的线程:MainThread(主线程) 和 WorkerThread。
MainThread 又叫 UI线程,Android应用程序中所有UI相关的代码都是运行在主线程中的,除了MainThread之外的其它所有线程都叫 WorkerThread。
在主线程MainThread中可以启动其它线程(WorkerThread)做一些事情。
MainThread 和 WorkerThread 的关系:
a. Android所有UI相关的代码都是运行在主线程(MainThread)中的;
b. WorkerThread 从原则上来讲是不允许操作UI的(即操作主线程中的UI对象);
c. 但是有部分特殊的UI组件可以在WorkerThread中进行操作,比如:ProgressBar。
public class MainActivity extends Activity { private TextView textView; private Button button; private ProgressBar progressBar; @Override public void onCreate(...) { textView = (TextView)findViewById(R.id.textView1); button = (Button)findViewById(R.id.button1); progressBar = (ProgressBar)findViewById(R.id.progressBar1); button.setOnClickListener(new OnClickListener() { public void onClick(...) { Thread thread = new MyThread(); thread.start(); } }); } /** * 内部WorkerThread类:MyThread */ class MyThread extends Thread { @Override public void run() { // 这里试图在WorkerThread中操作UI,但是这是不允许的 textView.setText("看我改变了,但是这是不可能的。"); // 但是 ProgressBar 是可以的 for(int i = 1; i <= 100; i++) { try { Thread.sleep(100); } catch(Exception e) { } // 这里的进度条可以正常工作 progressBar.setProgress(progressBar.getProgress() + 1); } } } }
相关文章推荐
- 主线程中一定不能放耗时操作,必须要开子线程,比如下载文件,不然会不让你拿到输入流--报错显示android.os.NetworkOnMainThreadException
- android studio 主线程中访问网络,遇到android.os.NetworkOnMainThreadException
- “android.os.NetworkOnMainThreadException”---关于Android4.0后无法将访问网络放入主线程中的解决办法
- Android学习笔记 android.os.NetworkOnMainThreadException
- Android MainThread(UI线程/主线程) 与 WorkThread(主线程以外的线程) 相互sendMessage
- android.os.NetworkOnMainThreadException(未开启子线程)
- android studio 主线程中访问网络,遇到android.os.NetworkOnMainThreadException
- 异常:android.os.NetworkOnMainThreadException
- Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
- Android开发:如何安全的中止一个自定义线程Thread
- android.os.NetworkOnMainThreadException处理方案
- 在Android中使用Handler和Thread线程执行后台操作
- android 避免线程的重复创建(HandlerThread、线程池)
- Android的线程使用来更新UI----Thread、Handler、Looper、TimerTask等
- [Android]Thread线程入门3--多线程
- 转:解决android.os.NetworkOnMainThreadException
- android.os.NetworkOnMainThreadException
- Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面
- android.os.NetworkOnMainThreadExcepti
- android.os.NetworkOnMainThreadException解决