Android Service tips

1)多个组件可同时绑定服务,全部取消绑定后,服务即会被销毁
2)startForegroundService之后5秒没有调用startForeground,系统会认为服务anr
3)应用被系统认定为前台应用需要满足的条件(至少一种):
        3.1)具有可见activity
        3.2)具有前台service
        3.3)另一个前台应用已关联到该应用(绑定service或者使用content provider)
4)android:exported = false:只有同一个应用内的组件才能启动该服务
5)处于运行状态时,服务可以使用 Toast 通知或状态栏通知来通知用户所发生的事件
6)前台服务通知:除非停止服务(stopSelf()/stopService())或者从前台移除(stopForeground()),否则不能清除通知
7)Android 9(API 级别 28)及之后,需要申请android.permission.FOREGROUND_SERVICE权限,才能启动前台服务
8)先startService()拉起了服务,此时有客户端bindService()绑定到了该服务,在所有客户端都调用了unBindService()之前,调用stopService()/stopSelf()不会停止服务
9)多次startService()会多次触发onStartCommand()
10)当A应用bindService拉起服务时会触发一次onBind,此时B应用再bindService不会触发onBind回调,除非之前A应用调用退出或者调用了unBindService;这是因为服务启动时返回的binder对象保存在AMS那里,如果没有解绑,其他应用再次bindService时AMS检测到服务正在运行就会直接返回该binder对象给发起绑定的应用,也就不会再触发服务的onBind回调
11)onUnbind触发的条件:所有客户端都退出或者调用了unbindService()
12)onRebind触发条件:onUnbind返回true,之后有客户端调用bindService重新绑定服务

13)服务重启/销毁生命周期流程图(官网):

https://developer.android.com/guide/components/bound-services?hl=zh-cn#Lifecycle

14)dumpsys查看某个应用的服务状态

dumpsys activity s com.sina.weibo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值