美文网首页
Service知识点相关

Service知识点相关

作者: 沐络 | 来源:发表于2019-07-18 10:59 被阅读0次

Service的启动方式

1,startService

生命周期:startService->onCreate()->onStartCommon()->stopService-onDestory()

多次调用Service时,service没有启动时,会走onCreate,后续则会多次走onStartCommon方法,最后调用stopService或StopSelf时,则会停止

特点:startService方式启动不受当前启动对象控制(面试某大厂时,面试官解释的)

2,bindService

生命周期:bindService->onCreate()->onBind()->unBindService->unBind()->onDestory

通过BindService的方式,在使用时要实现ServiceConnection 获得Service中的IBinder对象,通过IBinder可以获得服务端的回调,调用Service中的方法,一个Client多次绑定onBind只会走一次,但一个Service可以被多个Client进行绑定

特点:绑定后受当前Activity生命周期影响,受控制(大厂面试官解释的)

二 关于IntentService的使用

1,使用IntentService时,能提升应用的优先级,减少应用退出后台时被kill掉的几率

2,IntentService中内部有一个HandleThread线程,可以处理一些耗时的操作

3,使用IntentService时,当任务处理完后,会自动终止

4,当多次调用startService时,耗时任务会放在任务队列里,一个个执行

注意事项

IntentService,启动时,建议不要使用BindService的方式启动,因为Bind方式启动时,不会走onStartCommon,方法,就会导致无法触发onHandleIntent的回调

三,提升Service的优先级和进程优先级

1,在配置清单中注册Service时添加 priority=1000则为最高优先级

2,在onStartCommon中添加startForceground,同时在onDestroy中添加stopForceground方法

3,在onStartCommon中的return方法中返回的flag设置为START_STICKY

四,Service的保活方式

在Service的onDestroy中重启当前Service

在onStartCommon中修改返回值为START_STICKY 只有在内存不足被系统回收时才有可能被调用

使用前台服务提升应用的优先级,防止内存不足被杀掉

开启进程守护,互相唤醒,互相启动

监听系统广播,启动Service

设置成系统权限,

设置应用的白名单

相关文章

网友评论

      本文标题:Service知识点相关

      本文链接:https://www.haomeiwen.com/subject/fjmklctx.html