我是靠谱客的博主 明亮麦片,最近开发中收集的这篇文章主要介绍android四大组件之Service,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、什么是Service

Service是一个幕后工作者,是运行在android应用后台的一种组件。与activity不同的是,Service没有自己的用户界面,因为它们不需要于用户直接交互。

        二、基本用途

一种是执行长时间运行的耗时操作,如网络下载,播放音乐,文件系统监控等;另外一种是组件之间的交互。通过将某些功能以Service组件的形式进行封装,然后提供给其他应用组件调用。

三、Service的生命周期

启动模式:startService:onCreate()——>onStartCommand()——>service运行——>onDestroy()

绑定模式:bindService:onCreate()——>onBind()——>onStartCommand()——>service运行——>onUnBind()——>onDestroy()

        四、Service的创建和使用

创建步骤:

(1)创建一个Service类,该类继承android.app.Service类;

 (2)在Service类中实现OnStartCommand等生命周期的方法;业务逻辑实在OnStartCommand中实现

 (3)在AndroidManifest.xm文件中配置Service节点。节点的必选属性是android:name,它表示实现Service组件的类名称。

 (4)在Activity中,通过调用StartService()就可以来启动Service。通过stopService()方法停止Service。

注意的是:Service组件也是运行在应用的主线程中,即UI线程,为了避免出现ANR,必须放在开启一个独立的线程中运行。

当业务处理完毕之后,必须条用StopService来停止Service,否则它会在后台一直运行。

五、Service运行机制

Service组件没有自己单独的进程,它有它所在的android应用中的其它组件运行在同一个进程中,当然也可以运行在调用者的进程中。

Service组件也没有自己的单独的线程,它运行在进程中的主线程,因此,如果执行比较耗时的操作,应该创建一个单独的线程来执行。

六、Service安全与权限

在实际应用中,很多情况下多不希望Sevice被任意的其它组件调用访问。

方法:

(1)在Service标签中使用android:permission属性来指定Service访问权限,这是一个用户自定义权限,在调用者中必须声明该权限

(2)不配置inte-filter节点,确保对service的调用自能通过显示Intent。即明确知道Service实现类名的情况下调用。

(3)在Service标签中添加android:exported=false 。设置Service为当前应用私有的。

七、创建前台Service

参照:http://blog.csdn.net/ameyume/article/details/9150755

           八、提高Service的优先级

进行的优先级从高到低分别为:前台进程、可视进程、服务进程、后台进程和空进程。

参照:http://blog.csdn.net/lonely_fireworks/article/details/18005971

        九、Service运行模式

Service中的业务逻辑主要在OnStartCommand方法中实现,每次通过调用方法startService来启动service,都调用onStartCommand方法,其中方法的返回值确定了Service的运行模式,

  1. START_STICKY 是显示启动和停止的service使用的,它确保Service实例一直保持启动状态,但不能保证Intent被处理执行;
  2. START_REDELIVER_INTENT:可以确保service在意外终止后将自动重新运行并保证Intent被处理;
  3. START_NOT _STICKY:在service被以为终止后将停止运行。

最后

以上就是明亮麦片为你收集整理的android四大组件之Service的全部内容,希望文章能够帮你解决android四大组件之Service所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部