Android中有多种方法可以实现其他线程与Main线程通讯
2013-06-23 14:39
309 查看
如何实现线程间通讯
在Android中有多种方法可以实现其他线程与Main线程通讯,我们这里介绍常见的两种。
1) 使用AsyncTask
AsyncTask是Android框架提供的异步处理的辅助类,它可以实现耗时操作在其他线程执行,而处理结果在Main线程执行,对于开发者而言,它屏蔽掉了多线程和后面要讲的Handler的概念。你不了解怎么处理线程间通讯也没有关系,AsyncTask体贴的帮你做好了。不过封装越好越高级的API,对初级程序员反而越不利,就是你不了解它的原理。当你需要面对更加复杂的情况,而高级API无法完成得很好时,你就杯具了。所以,我们也要掌握功能更强大,更自由的与Main线程通讯的方法:Handler的使用。
AsyncTask的使用方法见示例工程《EX10_02AsyncTask》
2) 使用Handler
这里需要了解Android SDK提供的几个线程间通讯的类。
2.1 Handler
Handler在android里负责发送和处理消息,通过它可以实现其他线程与Main线程之间的消息通讯。
2.2 Looper
Looper负责管理线程的消息队列和消息循环
2.3 Message
Message是线程间通讯的消息载体。两个码头之间运输货物,Message充当集装箱的功能,里面可以存放任何你想要传递的消息。
2.4 MessageQueue
MessageQueue是消息队列,先进先出,它的作用是保存有待线程处理的消息。
它们四者之间的关系是,在其他线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件添加到Main线程的MessageQueue中,Main线程通过MainLooper从消息队列中取出Handler发过来的这个消息时,会回调Handler的handlerMessage()方法。
Handler的使用方法见示例工程《EX10_03HandlerAndMsg》
除了以上两种常用方法之外,还有几种比较简单的方法
3) Activity.runOnUiThread(Runnable)
4) View.post(Runnable)
View.postDelayed(Runnable, long)
5) Handler.post
Handler.postDelayed(Runnable, long)
http://www.cnblogs.com/suiyc/archive/2011/06/04/2073218.html
在Android中有多种方法可以实现其他线程与Main线程通讯,我们这里介绍常见的两种。
1) 使用AsyncTask
AsyncTask是Android框架提供的异步处理的辅助类,它可以实现耗时操作在其他线程执行,而处理结果在Main线程执行,对于开发者而言,它屏蔽掉了多线程和后面要讲的Handler的概念。你不了解怎么处理线程间通讯也没有关系,AsyncTask体贴的帮你做好了。不过封装越好越高级的API,对初级程序员反而越不利,就是你不了解它的原理。当你需要面对更加复杂的情况,而高级API无法完成得很好时,你就杯具了。所以,我们也要掌握功能更强大,更自由的与Main线程通讯的方法:Handler的使用。
AsyncTask的使用方法见示例工程《EX10_02AsyncTask》
2) 使用Handler
这里需要了解Android SDK提供的几个线程间通讯的类。
2.1 Handler
Handler在android里负责发送和处理消息,通过它可以实现其他线程与Main线程之间的消息通讯。
2.2 Looper
Looper负责管理线程的消息队列和消息循环
2.3 Message
Message是线程间通讯的消息载体。两个码头之间运输货物,Message充当集装箱的功能,里面可以存放任何你想要传递的消息。
2.4 MessageQueue
MessageQueue是消息队列,先进先出,它的作用是保存有待线程处理的消息。
它们四者之间的关系是,在其他线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件添加到Main线程的MessageQueue中,Main线程通过MainLooper从消息队列中取出Handler发过来的这个消息时,会回调Handler的handlerMessage()方法。
Handler的使用方法见示例工程《EX10_03HandlerAndMsg》
除了以上两种常用方法之外,还有几种比较简单的方法
3) Activity.runOnUiThread(Runnable)
4) View.post(Runnable)
View.postDelayed(Runnable, long)
5) Handler.post
Handler.postDelayed(Runnable, long)
http://www.cnblogs.com/suiyc/archive/2011/06/04/2073218.html
相关文章推荐
- Code Fragment-Android在其他线程可以使用方法在UI线程执行UI相关
- Android:线程间通讯的其他方法、runOnUiThread(action)、Handler.post(action)、post
- android自定义RadioGroup可以添加多种布局的实现方法
- Android 线程 thread 两种实现方法!
- 静默安装apk的方法--Android是否可以实现静默安装模式
- Android 线程 thread 两种实现方法
- android全屏去掉title栏的多种实现方法
- 当一个线程进入一个对象的一个synchronized方法后,其他线程是否可以进此对象的其他方法?
- android中多种实现跑马灯方法
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
- android开发中单击事件的多种实现方法
- java中有几种方法可以实现一个线程
- 五.在Android中实现线程的方法
- Android 线程 thread 两种实现方法
- android中实现view可以滑动的六种方法
- Java-java线程:两个实现方法,死锁现象,线程通讯,线程停止等
- android自定义RadioGroup实现可以添加多种布局
- Android 线程thread的两种实现方法(必看)
- Template Method 在一个方法中实现一个算法,但是推迟定义算法中的某些步骤,从而使其他的类可以重新定义这些步骤
- Android 线程 thread 两种实现方法!