adnroid server深入解析

adnroid server深入解析

ID:15952319

大小:85.22 KB

页数:13页

时间:2018-08-06

adnroid server深入解析_第1页
adnroid server深入解析_第2页
adnroid server深入解析_第3页
adnroid server深入解析_第4页
adnroid server深入解析_第5页
资源描述:

《adnroid server深入解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android的Service深入分析(全)1.先来看看WhatisService?AServiceisnotaseparateprocessAnd AServiceisnotathread.一个服务不是一个独立的进程,也不是一个线程。那Service是什么呢? 后台运行处理耗时较长的工作 Service是一个应用程序组件 Service没有图形化界面 Service通常用来处理一些耗时比较长的操作 可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等等2.接着来看看Service的整个生命周期:Service的活动生

2、命周期是在onStart()之后,这个方法会处理通过startServices()方法传递来的Intent对象。音乐Service可以通过开打intent对象来找到要播放的音乐,然后开始后台播放。Service停止时没有相应的回调方法,即没有onStop()方法。onCreate()方法和onDestroy()方法是针对所有的Services,无论它们是否启动。通过Context.startService()和Context.bindService()方法。然而,只有通过startService()方法启动的Service才会被调用onStart()方法。如果

3、一个Service允许别人绑定,那么需要实现以下额外的方法:IBinderonBind(Intentintent)booleanonUnbind(Intentintent)voidonRebind(Intentintent)onBind()回调方法会继续传递通过bindService()传递来的intent对像。onUnbind()会处理传递给unbindService()的intent对象。如果Service允许绑定,onBind()会返回客户端与服务互相联系的通信频道。如果建立了一个新的客户端与服务的链接,onUnbind()方法可以请求调用onRebin

4、d()方法。下面的图表介绍了Service的回调方法,然而,它把通过startService()方法建立的服务从通过bindService()方法建立的服务分离开。记住任何服务,无果它怎样建立,都默认客户端可以链接,所以任何的Service能够接收onBind()和onUnbind()方法。 3.Service组件的通信方式一共有三种:(1)通过startService来启动的Service;(2)通过bindService来启动的Service;(3)使用AIDL方式的Service,下面我们来看看它们的具体使用方法,和它们之间有什么区别。(1)首先来说说通

5、过startService来启动的Service(后台处理工作)         startService(Intentservice),通过intent值来指定启动哪个Service,可以直接指定目标Service的名,也可以通过Intent的action属性来启动设置了相应action属性的Service,使用这种方式启动的Service,当启动它的Activity被销毁时,是不会影响到它的运行的,这时它仍然继续在后台运行它的工作。直至调用StopService(Intentservice)方法时时或者是当系统资源非常紧缺时,这个服务才会调用onDesto

6、ry()方法停止运行。所以这种Service一般可以用做,处理一些耗时的工作。可能有人会问,如果Service不是独立的一个进程的话,为什么当Activity退出时,Service仍然可以进行运行呢?其实是这样的,sdk上说了activity和service默认是运行在应用进程的主线程中,四大组件默认都是和activity运行在同一个主线程中的,那就是说activity通过startservice方法启动一个服务后,被启动的服务和activity都是在同一个线程中的。所以当我主动销毁了这个activity,但是他所在的线程还是存在的,只不过是这个activit

7、y他所占用的资源被释放掉了,这个activity所在的主线程只有当android内存不足才会被杀死掉,否则一般的情况下这个activity所在的应用程序的线程始终存在,也就是这个activity所启动的服务也会一直运行下去。        还有一点需要注意的是,如果Service要处理一些比较耗时的工作时,因为Service和Activity默认情况都在同一个主线程中的缘故,所以要操作这些耗时的工作一般是在Service里另起一个新线程来处理。这样可以避免主线程的阻塞,影响用户体验性。(2)然后来说说通过bindService来启动的Service(在本地同进

8、程内与Activity交互)     

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。