美文网首页
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