- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android XML:?xml version=1.0 encoding=utf-8?LinearLayout /ProgressBar android:id=@+id/c15_progress style=?android:attr/progressBarStyleHorizontal !--
Android XML:
?xml version=1.0 encoding=utf-8?
LinearLayout /
ProgressBar android:id=@+id/c15_progress style=?android:attr/progressBarStyleHorizontal !-- 这表明采用传统水平进度条的方式-- android:layout_width=fill_parent
android:layout_height=wrap_content /
/LinearLayout
public class Chapter15Test1 extends Activity{
private ProgressBar bar = null; private boolean isRunning = false;
/* 我们为这个Acivity 创建一个用于和后台程序通信的handler,简单地,只要一收到message,就将
progressbar 进度增加 5。*/
程序需要相应用户的操作,最要能在 200ms(0.2s)之内,如果超过 5 秒没有反应, ActivityManager 会没有提示就 kill 了 activity。然而,activity 可能真的需要时间来进行
处理,这往往会用到后台线程-background thread。后台线程可以安全地 和 UI 线程进行交互, 其中后台线程是不能修改 UI 的。我不太确切知晓“不能修改 UI”到何种程度,例如在下面的
例子进度条状态的修改是允许的,在复杂的例 子中可能会出现问题,例如两个后台线程都要处理同一个 widget,可能会有不可预知的情况出现,然而就编程而言,确实不应当如此处理,后台进程应避免涉 及 UI 的处理,UI 的归 UI,处理的规处理。这样才是良好的编程风格或者是一种编程原则。
通过创建一个 Handler 子类的对象,每个 acvivity 只需一个 Handler 对象。后台进程可通过两种方式 Handler 进行通 信:message 和 Runnable 对象,其结果实质都是将在 Handler 的队列中放入内容,message 是放置信息,可以传递一些参 数,Handler 获取这些信息并将判度如何处理,而 Runnable 则是直接给出处理的方法。队列就是依次执行,Handler 会处理完一个消息或者执 行完某个处理在进行下一步,这样不会出现多个线程同时要求进行 UI 处理而引发的混乱现象。
这些队列中的内容(无论 Message 还是 Runnable)可以要求马上执行,延迟一定时间执行或者指定某个时刻执行,如果将他们放置在队列 头,则表示具有最高有限级别,立即执行。这些函数 包 括 有 :sendMessage(), sendMessageAtFrontOfQueue(), sendMessageAtTime(), sendMessageDelayed()以及用于在队列中加入 Runnable 的 post(), postAtFrontOfQueue(), postAtTime(),postDelay()。
一般而言,推荐是 Messge 方式,这样程序设计得可以更为灵活,而 Runnable 在某些简单明确的方式中使用。我们将通过三种方法编写一个小例子来学习。这个例子是一个进度条,每隔 1 秒,进度条步进 5,如果 acvity 停止时,进度条归零。
例子一:线程开启,采用 Message 传递后台线程和 UI 主线程之间的信息
/* 步骤 1:创建Handler,并通过 handleMessage()给出当收到消息是UI 需要进行如何处理,例子简单不对 msg 的内容进行分析*/
Handler handler= new Handler(){
public void handleMessage(Message msg) { bar.incrementProgressBy(5);
}
};
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.chapter_15_test1); bar=(ProgressBar)findViewById(
您可能关注的文档
最近下载
- 理想KS系列 KS500 KS600 KS800 速印机中文维修手册.pdf VIP
- 理想 SF 9350 9390 9450 9250 速印机中文维修手册.pdf VIP
- 理想 SF 5450 5350 5250 5050 5430 速印机中文维修手册.pdf VIP
- 给排水国标图集-04S520:埋地塑料排水管道施工.pdf VIP
- 建筑垃圾资源再利用项目商业计划书.pptx VIP
- 智能变电站基础知识(GOOSESV介绍).ppt VIP
- 理想 ES2561 ES3761C 3791 ES5791 系列速印机中文维修手册.pdf VIP
- 产品试产评估报告(最全、最详细版).pdf VIP
- 博弈论教程(第三版).pptx VIP
- 理想 EV ES 2 3 5 系列速印机零件手册.pdf VIP
文档评论(0)