Android四大应用组件之Service初探

理解Service

定义

Service用来在后台完成一个时间跨度比较大的工作且没有关联任何界面。即使应用退出, 服务也不会停止。默认情况下在UI线程中运行,但是在执行耗时操作时,需要在分线程中执型,避免阻塞用户界面。

与Thread的区别

两者都是应用退出时不会停止(不是退出进程),区别是再次进入应用时可以与Service进行通信,但是不能在控制之前的Thread对象。

两种启动与停止方式

  1. 一般启动:
    context.startService(Intent intent);
    context.stopService(Intent intent);
  2. 绑定启动:
    context.bindService(Intent intent, ServiceConnection connection);
    context.unbindService(ServiceConnection connection);
  3. 区别:
    一般启动后除非停止,或者杀死进程,不然服务不会停止
    绑定启动后,调用者死亡后,服务也就死了。

生命周期

Service生命周期

AIDL

每个应用程序都运行在自己的独立进程中,并且可以启动另一个应用进程的服务,而且经常需要在不同的进程间传递数据对象。在Android平台,一个进程不能直接访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。

AIDL (Android Interface Definition Language) 用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。

补充:

  1. 每个Service必须在manifest中 通过来声明
  2. 绑定服务不会调用 onStart() 或 onStartCommand() 方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值