- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 后台默默的劳动者-探究服务;10.1 服务是什么
10.2 Android多线程编程
10.3 服务的基本用法
10.4 服务的生命周期
10.5 服务的更多技巧
10.6 服务的最佳实践-完整版的下载示例
10.7 小结与点评
;Android沿用了诺基亚系统的Symbian操作系统的老习惯,从一开始就支持后台功能,这使得应用程序即使在关闭的情况下仍然可以在后台继续运行。后台功能属于四大组件之一。;服务(Service)是Android中是实现程序后台运行的解决方案,它非常适合执行那些不需要与用户进行交互还需要长期运行的???务。
服务的界面不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了一个应用程序,服务仍然能保持正常运行。
服务并不是运行在一个独立的进程中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所以依赖于该进程的服务也会停止运行。
默认在主线程,可能会造成主线程阻塞的问题。
;当我们执行耗时操作,就必须放在子线程中运行
避免线程阻塞的问题,增强用户的体验度。;Android多线程与Java多线程使用语法相同。比如说,定义一个线程只需要定义一个类继承自Thread,然后重写父类的run()方法,并在里面编写耗时逻辑即可,如下;new出MyThread的实例,然后调用start()方法,这样run()方法就运行在子线程中了,如下:
new MyThread().start();;当然,使用继承的方式高耦合,更多的时候我们选择实现Runable接口的方式来定义一个线程
MyThread myThread = new MyThread();
new Thread(myThread).start();;;更新应用程序中的UI元素,必须放在主线程。否则就会出现异常。;点击按钮,启动线程,更改文字内容
Only the original thread that created a view hierarchy can touch its views
;子线程发送一个Message消息,主线程处理消息,刷新UI;子线程发出消息,主线程处理消息;Android中的异步消息处理主要有4部分组成:
Message,
Handler,
MessageQueue,
Looper。;整个异步消息处理的核心思想:一条Message经过一个流程的辗转调用后,也就从子线程进入到了主线程,从不能更新UI操作,变成了可以更新UI操作。;;Android为了更加方便在子线程中更新UI操作,使用AsyncTask。它的实现原理也是基于异步消息处理机制的封装。
AsyncTask的基本用法,AsyncTask是一个抽象类,我们必须创建一个类继承它。继承时可以为AsyncTask指定3个泛型参数。
Params。在执行AsyncTask时传入的参数,可用于在后台的使用。
Progress。 后台执行任务时,如果需要在界面显示当前的进度条,则使用这里指定的泛型作为进度单位。
Result。 任务执行完毕,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。
;UI线程称为主线程,其他为子线程;;;应该怎么做?;第一个泛型参数Void,表示不需要传入参数给后台任务。?第二个泛型参数指定为Integer,表示使用整型数据类型作为进度显示单位。?第三个泛型参数指定为Boolean,表示返回回馈的结果。;;;;new DownloadTask().execute();;Android四大组件之一 : 服务
activity、service、content provider、broadcast receiver;新建ServiceTest项目,点击包—New—Service—Service;;;;借助Intent来启动和停止这个服务;;一种是startService(),他对应的结束服务的方法是stopService(),
另一种是bindService(),结束服务的是unBindService(),
这两种方式的区别就是:当客户端Client使用startService方法开启服务的时候,这个服务和Client之间就没有联系了,Service的运行和Client是相互独立的,想结束这个服务的话,就在服务本身中调用stopSelf()方法结束服务。而当客户端Client使用bindService方法开始服务的时候,这个服务和Client是一种关联的关系,他们之间使用Binder的代理对象进行交互,这个在后面会详细说到,要是结束服务的话,需要在Client中和服务断开,调用unBindService方法。;借助onBind()方法,使我们的服务与活动关联起来。
我们希望实现MyService实现一个下载功能,
您可能关注的文档
- 信托法专题课件.ppt
- 艺术 科技论文写作第四章搜集资料.ppt
- 影视技术基础之二 测光与曝光.ppt
- 影视技术基础之三 光影造型.ppt
- 影视技术基础之四 摄影构图.ppt
- 影视技术基础之一 基本概念.ppt
- 影视视听语言:1 影视视听语言.ppt
- 影视视听语言:2 构图.ppt
- 影视视听语言:2 画面的构成要素.ppt
- 影视照明教学课件:第二章 影视照明的灯具.ppt
- 《第一行Android代码》课件:第五章 全局大喇叭-详解广播机制.pptx
- 《第一行Android代码》课件:第一章 开始启程-你的第一行android代码.pptx
- 电视摄像技术6-运动摄像.pptx
- 联想系列产品手册:Ideapad D330 V4180822.pptx
- 联想系列产品手册:Ideapad D330 V20180822(4).pptx
- 联想系列产品手册:Lenovo explorer混合现实头显.pptx
- 联想系列产品手册:Lenovo MIIX310.pptx
- 联想系列产品手册:Lenovo Mirage 产品手册update.pptx
- 联想系列产品手册:Lenovo P8.pptx
- 联想系列产品手册:lenovo P8V20161111.pptx
文档评论(0)