Android 四大组件——Service知识点

本篇文章主要讲一些Service的知识点。
一. Service分类

  1. 按运行地点分类
类型特点优点缺点应用场景
本地服务[LocalService]运行在主线程 主线程终止后,服务也会终止节约资源 通信方便主进程终止后,服务也会终止需依附某个进程的服务:音乐播放器
远程服务[RemoteService]运行在独立的进程 不受其他Activity的影响服务常驻后台,不受其他Activity的影响消耗资源,需要单独开辟进程;通信复杂AIDL进行复查IPC操作系统级服务
  1. 按运行类型分
类型特点应用场景
前台服务 [用户可见]在通知栏显示通知[用户可见的服务]服务使用时需要用户知道,如:音乐播放器
后台服务处于后台的服务[用户不可见]服务使用时用户不需要知道。如日期更新等
  1. 按功能分类
类型特点应用场景
不可同行的后台服务startService启动,调用者退出后,服务依然在后台运行Service不与Acitivity通信
可通信的后台服务 bindService 方式启动bindService 方式启动 ,调用者退出后,随着调用者一起销毁服务需要与Activity进行通信。节约系统资源=第一次bindService才会去创建Service运行;服务只公开一个远程接口,供客户端调用;BroadCast也可完成这种需要,但是因为频繁调用的话,造成性能问题,并且BroadCast执行时间短,可能代码执行一段就不继续执行了,而Service就不会有这些问题
可通信的后台服务 使用startService 、bindService启动调用者退出后,随着调用者销毁Service与Activity通信,不需要控制开始时刻

二. Service的一些属性

Androidmanifest里Service的常见属性说明

属性说明备注
android:nameService类名
android:labelService名字不填的话默认为Service类名
android:iconService图标–
android:permission申明此Service的权限有提供了该权限的应用才能控制或连接此服务
android:process表示该服务是否运行在另外的进程[远程服务]不设置默认为本地服务;remote则设置成远程服务
android:enabled系统默认启动true:Service 将会默认被系统启动;不设置则默认为false
android:exported该服务是否能够被其他应用程序所控制或连接不设置默认此项为 false

Service 与 Thread的区别
Service和Thread完全是两种概念,之所以提出来是因为Service的后台概念,导致很多人误解。

类型相同点不同点
Service执行异步操作运行在主线程;不依赖与UI,只要进程在,Service就可以运行;所以的Activity都可以与Service进行通信;处理耗时操作需要在Service中创建Thread子线程进行
Thread执行异步操作单独开辟一个子线程;依赖某个Activity;其他Activity无法对其进行操作;很难对其控制;当前Activity销毁后,无法获取之前的线程实例

注:一般会将 Service 和 Thread联合着用,即在Service中再创建一个子线程(工作线程)去处理耗时操作逻辑,如下代码:

@Override  
public int onStartCommand(Intent intent, int flags, int startId) {  
//新建工作线程
    new Thread(new Runnable() {  
        @Override  
        public void run() {  
            // 开始执行后台任务  
        }  
    }).start();  
    return super.onStartCommand(intent, flags, startId);  
}  
  
class MyBinder extends Binder {  
    public void service_connect_Activity() {  
  //新建工作线程
        new Thread(new Runnable() {  
            @Override  
            public void run() {  
                // 执行具体的下载任务  
            }  
        }).start();  
    }  
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值