androidUI界面更新的问题 最近看android编程源代码时,看到关于UI界面更新的实现方法,哪位大侠在这方面有总结的,忘能给小弟说一下有哪些基本方法及其实现原理。在这里我接触了两个线程类型的,一个是通过hander invalidate通知UI主线程, 还有一个是用view的postInvalidate通知UI主线程。我对这两个方法都是才接触,希望能指点一下,不限于这两个方法, 谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还可以使用AsyncTask,这个在使用后台与UI进行交互数据的时候用得比较多。 Handler适用于简单的后台处理完成后更新UI的操作,比如与远程Webservice交互数据时就不适用。一般使用webservice或者其它远程服务器进行交互数据的都用ASyncTask进行处理。而postInvalidate一般情况 下是不怎么用,一般用到postInvalidate的情况都是在UI里面直接发送postInvalidate(也就是单击某一个控件或者按钮时,直接发送postInvalidate消息) 嗯,在看一个简单的程序代码,里面实现的UI界面更新确实用的postInvalidate实现的很简单的那种,哈哈。谢谢你提到的ASyncTask,还没接触过,正在网上了解。 希望这个例子对你有帮助http://blog.csdn.net/mylzc/article/details/6736988 网上查询了下资料,了解了下android UI 更新的问题。主要是android的UI单线程的原因,导致UI更新操作只能在UI主线程完成。所以子线程只有通过和UI主线程的通信来完成UI更新。有四种类型:1.Activity.runOnUIThread(Runnable)2.View.post(Runnable),View.postDelay(Runnable,long)3、Handler4、AsyncTask关于之前说的invalidate 是画面更新机制的一部分,当UI主线程接受到invalidate的消息后就会自动重绘画面,postinvalidate可以从子线程传递这个消息。所以invalidate只是出发UI主线程重绘画面。子线程和主线程之间的数据交互则要通过以上四种方法实现, 最终是通过handler实现的,具体的实现原理我没有了解。 这个是我的理解了,谢谢了。有理解错的地方还请给我指正了啊, 哈哈。 在子线程中创建Dialog 自定义button问题,仿360手机卫士界面 新手问题 谁能提供一下完整版的可编译的Android2.2的源代码? mDb cannot be resolved 关于Android C代码 变量拆分组合的问题 照着书里的代码打了一遍,不过运行总是崩溃 菜鸟问个声明时的简单问题 android javacv 视频缩短 打开系统摄像机怎么设置默认打开的是前置摄像头? 求助:关于google地图使用报错INSTALL_FAILED_MISSING_SHARED_LIBR 怎么把JSON Object放到另一个JSON Object里面去?
Handler适用于简单的后台处理完成后更新UI的操作,比如与远程Webservice交互数据时就不适用。一般使用webservice或者其它远程服务器进行交互数据的都用ASyncTask进行处理。而postInvalidate一般情况 下是不怎么用,一般用到postInvalidate的情况都是在UI里面直接发送postInvalidate(也就是单击某一个控件或者按钮时,直接发送postInvalidate消息)
http://blog.csdn.net/mylzc/article/details/6736988
主要是android的UI单线程的原因,导致UI更新操作只能在UI主线程完成。所以子线程只有通过和UI主线程的通信来完成UI更新。
有四种类型:
1.Activity.runOnUIThread(Runnable)2.View.post(Runnable),View.postDelay(Runnable,long)3、Handler4、AsyncTask关于之前说的invalidate 是画面更新机制的一部分,当UI主线程接受到invalidate的消息后就会自动重绘画面,postinvalidate可以从子线程传递这个消息。所以invalidate只是出发UI主线程重绘画面。子线程和主线程之间的数据交互则要通过以上四种方法实现, 最终是通过handler实现的,具体的实现原理我没有了解。 这个是我的理解了,谢谢了。有理解错的地方还请给我指正了啊, 哈哈。