Service总结

service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互、它必须由用户或者其他程序显式的启动、它的优先级比较高, 它比处于前台的应用优先级低,但是比后台的其他应用优先级高,这就决定了当系统因为缺少内存而销毁某些没被利用的资源时,它被销毁的概率很小

android:process=":remote",代表在应用程序里,当需要该service时,会自动创建新的进程。

android:process="remote",没有“:”分号的,则创建全局进程,不同的应用程序共享该进程。

如果我们需要让一个服务在一个远端进程中运行(而不是标准的它所在的apk的进程中运行),我们可以在声明文件中这个服务的标签中通过android:process属性为其指定一个进程。
 注意:这里选择”remote”这个名字是随意主观的,你能用其他名字来让这个服务在另外的进程中运行。冒号’:’这个前缀将把这个名字附加到你的包所运行的标准进程名字的后面作为新的进程名称。

android:process
        服务所在进程的名字。通常,一个应用的所有组件都运行在系统为这个应用所创建的默认进程中。这个默认进程是用这个应用的包名来命名的。
        标签的process属性可以设置成和所有组件都不同的默认值。但是这些组件可以通过设置自己的process值来覆写这个默认值,这样可以让你的应用跨多进程运行。
        如果被设置的进程名是以一个冒号开头的,则这个新的进程对于这个应用来说是私有的,当它被需要或者这个服务需要在新进程中运行的时候,这个新进程将会被创建。如果这个进程的名字是以小写字符开头的,则这个服务将运行在一个以这个名字命名的全局的进程中,当然前提是它有相应的权限。这将允许在不同应用中的各种组件可以共享一个进程,从而减少资源的占用。

Service:onStartCommand方法返回值说明:

onStartCommand方法必须返回一个整数,这个整数是一个描述了在系统的杀死事件中,系统应该如何继续这个服务的值,从onStartCommand返回的值必须是一下常量:

START_NOT_STICKY:如果系统在onStartCommand方法返回之后杀死这个服务,那个直到接收新的intent对象,这个服务才会被重新创建。这是最安全的选项,用来避免在不需要的时候运行你的服务。

START_STICKY: 如果系统在onStartCommand返回后杀死这个服务,系统就会重新创建这个服务并且调用onStartCommand方法,但是它不会重新传递最 后的Intent对象,系统会用一个null的intent对象来调用onStartCommand方法,在这个情况下,除非有一些被发送的Intent 对象在等待启动服务。这适合于不执行命令的媒体播放器(或类似服务),它只是无限期的运行着并等待工作结束。

START_REDELIVER_INTENT: 如果系统在onStartCommand方法返回后,系统就会重新创建了这个服务,并且用发送给这个服务的最后的Intent对象调用了 onStartCommand方法。任意等待中的Intent对象会依次被发送。这适用于那些应该立即恢复正在执行的工作服务,比如下载等。

Android Service与Activity之间通信的几种方式

  1. Activity调用bindService (Intent service, ServiceConnection conn, int flags)方法,得到Service对象的一个引用,这样Activity可以直接调用到Service中的方法,如果要主动通知Activity,我们可以利用回调方法 
  2. Service向Activity发送消息,可以使用广播,当然Activity要注册相应的接收器。比如Service要向多个Activity发送同样的消息的话,用这种方法就更好

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值