- 浏览: 611276 次
文章分类
最新评论
-
q781253433:
qin ~.求demo看看~
Android之Widget -
zhongyuanceshi:
博主,没看到你的例子的Demo,共享下
Android之Widget
当第一次启动一个Android程序时,Android会自动创建一个称为“main”主线程的线程。这个主线程(也称为UI线程)很重要,因为它负责把事件分派到相应的控件,其中就包括屏幕绘图事件,它同样是用户与Andriod控件交互的线程。比如,当你在屏幕上按下一个按钮后,UI线程会把这个事件分发给刚按得那个按钮,紧接着按钮设置它自身为被按下状态并向事件队列发送一个无效(invalidate)请求。UI线程会把这个请求移出事件队列并通知按钮在屏幕上重新绘制自身。
单线程模型会在没有考虑到它的影响的情况下引起Android应用程序性能低下,因为所有的任务都在同一个线程中执行,如果执行一些耗时的操作,如访问网络或查询数据库,会阻塞整个用户界面。当在执行一些耗时的操作的时候,不能及时地分发事件,包括用户界面重绘事件。从用户的角度来看,应用程序看上去像挂掉了。更糟糕的是,如果阻塞应用程序的时间过长(现在大概是5秒钟)Android会向用户提示一些信息,即打开一个“应用程序没有相应(application not responding)”的对话框。
Andriod提供了几种在其他线程中访问UI线程的方法:
- Activity.runOnUiThread( Runnable )
- View.post( Runnable )
- View.postDelayed( Runnable, long )
- Hanlder
始终记住以下两个关于单线程模型的准则:
- 不要阻塞UI线程;
- 一切Android UI操作都在UI线程中执行。
-
比较耗时的操作放在后台服务,通过通知机制通知用户使用的活动(activity);
android有两种方式处理线程:
在后台线程中处理耗时的操作
-
使用Handler
创建后台线程最友好的办法是创建一个Handler子类的实例。只需一个Handler对应一个Activity。自定义的后台线程可与Handler通信,Handler将与UI线程一起工作。和Handler通信,需要两个选项,message和runnable对象。
Message
发送Message到Handler,第一步调用obtainMessage(),从池中得到Message对象。
然后,可通过消息队列将Message发送给Handler,通过sendMessage…()方法族:
sendMessage() 立即发送Message到消息队列
sendMessageAtFrontOfQueue() 立即发送Message到队列,而且是放在队列的最前面
sendMessageAtTime() 设置时间,发送Message到队列
sendMessageDelayed() 在延时若干毫秒后,发送Message到队列
为了处理Message,Handler需要实现handleMessage(),当Message出现在队列中时,会调用handleMessage()方法。另外,Handler可在需要时更新UI。
-
有关线程的使用,这里介绍的很详细了:http://android.blog.51cto.com/268543/343823
发表评论
-
Android之Fastboot、Recovery基础知识
2013-12-19 22:13 1011参考文章: http://blog.csdn.net/y9 ... -
Eclipse设置主题
2013-10-26 22:32 660下载自己喜欢的主题: http://eclipsec ... -
gitignore文件的配置
2013-09-24 15:29 1685gitignore文件在Android ... -
Eclipse安装Git插件
2013-09-24 14:20 730http://jiangli.easymorse.com/?p ... -
Eclipse像Xcode一样自动有提示
2013-09-05 17:04 11781. 打开Eclipse,然后打开“Preferences ... -
点九PNG技术
2013-04-16 13:26 844参考文章: http://blog.csdn.net/g ... -
Android ASE 脚本环境
2013-04-10 12:32 1152原文: http://blog.sina.com.cn/ ... -
android 按两次返回键退出
2012-12-25 20:01 1273package com.anjoyo.test; ... -
android混淆代码总结
2012-12-19 18:02 1484反编译工具下载地址:http://ishare.iask.si ... -
System.out.printf输出格式
2012-12-13 22:01 2154// 定义一些变量,用来格式化输出。 double ... -
Regex正则表达式的使用
2012-12-09 20:20 1740正则表达式是用来描述某些字符串规则的工具,可以用此规则来做 ... -
IOS&Android开发 使用特殊字体,使用自定义字体
2012-11-24 00:16 1520IOS开发: 原文链接:http://tieba.baidu ... -
AspectJ的安装和Eclipse的AJDT插件的配置
2012-11-19 15:21 4889安装AspectJ是为了正常使用软件MonkeyTalk 1 ... -
Mac配置android开发环境
2012-11-13 16:18 48一.Eclipse的下载 到网站:http ... -
RelativeLayout相关属性
2012-11-13 14:49 935android:layout_centerInP ... -
Android资源文件
2012-11-04 15:22 914res [res中共有10种文 ... -
activity的启动方式(launch mode)
2012-11-04 15:14 820其他很详细的参考:http://blog.csdn.net/b ... -
android分享功能的实现(分享到微博空间等)
2012-11-03 22:15 2167//Intent intent = new Inten ... -
Android开发环境配置
2012-11-03 20:04 8451、JDK安装: http://jing ... -
android intent和intent action大全
2012-09-13 20:25 1022android 中intent是经常要用到的。不管是页面 ...
相关推荐
Android线程结束——合理的结束你想结束的线程
浅谈android线程模型
android 线程间通讯
Android线程间通信的Message机制Android线程间通信的Message机制Android线程间通信的Message机制Android线程间通信的Message机制Android线程间通信的Message机制
android 线程之间通过Handler发送消息实例
从现实生活中理解android 线程消息机制
首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。 而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。 ...
Android开发中的多线程编程技术资源包 TAG:Android 多线程 应用开发 Alfred整理发布,版权所有!
android多线程机制教程 android多线程机制 android多线程机制 android多线程机制
android多线程管理,实现多线程
android线程启动方法源代码 本例子实现了android中线程启动的方法 有助于初学者学习
Delphi XE5例子中的一个Android线程使用的代码AnonymousThread
Android多线程任务优化2:实现后台预读线程
android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序
Android 进行文件分段多线程下载的实例,用户可以指定线程数,还可以通过进度条查看下载的进度。
Android----线程实现图片移动 , 运用线程实现图片的水平循环往返移动!
本例中简单运用了线程间通信原理,简单明了,适合初学线程通信
Android多线程下载,移植了上一次java编程中的代码。。。
曾经使用过AndroidAnnotations,对里面的线程切换方式很是喜欢,使用非常方便,可是由于各种原因,已经不再想使用AndroidAnnotations了, 但又舍不得这种便捷的方式,于是就实现了自己的线程切换。
一个线程控制View的代码实例,其中主要使用了两种方式:Post方式和Handler方式。