美文网首页
Android源码-Service(一)

Android源码-Service(一)

作者: 没有了遇见 | 来源:发表于2023-12-08 17:20 被阅读0次

    1:什么是service

    Service(服务)是Android系统提供的四大组件之一,主要作用是后台执行操作.Activity是Android提供的UI操作的组件,而Service是Android提供的没有UI页面后台执行的操作.

    2:Service生命周期

    2.1 startService() 生命周期

    开启Service 分为两种 startService() 和bindService() startService() Service会在后台长期运行 和也页面Activity无关 bindService()关联了Activity的生命周期 页面销毁也销毁

    bindService 可以传入一个ServiceConnection实例 CS 模式一对多个实例 c是Client s Service.
    AIDL 的实现就是bindService 这种方式实现的

    1:onCreate() 第一次创建执行创建方法 已经存在就不再走此方法
    2:onStart() 过期方法
    3:onStartCommand() 执行完onCreate() 方法之后执行此方法,当Service已经存在 直接执行此方法
    4:onDestory()销毁的时候执行此方法,调用stopSelf()或者context.stopService()之后执行
    
    ####注意:
    当onStartCommand()方法未执行完毕的时候调用stopSelf()或者context.stopService() 不会立即调用onDestory()方法.需要onStartCommand()方法执行完毕之后再执行onDestory方法().
    
    

    2.2 bindService()

    启动 context.bindService()
    1:onCreate() 
    2:onBind()
    释放 context.unBindService()
    3:onUnBind()
    4:onDestory()
    
    

    3.Service和IntentService

    Service 是Android的一个组件实现了后台运行的机制,在主线程中.后台运行就是为了处理数据,但是耗时处理又需要在子线程中处理,基于这种情况Android系统又提供了一个Service的子类.

    IntentService :是Service的子类,内部维护了一个HanlerThread线程和一个Looper和一个Handler.用于处理子线程的操作().
    实质就是:Service +Thread+Handler+looper的子线程耗时操作

    问题:

    1:Service中能Toast吗?

    回答: Service 是主线程的可以Toast

    2: 为什么IntentService 回调方法中不能Toast??

    IntentService 是维护了一个ThreadHandler 在子线程操作 在他的回调方法中是不可以直接Toast的 可以创建一个Handler 切换到主线程再Toast.

    回答:因为IntentService的操作 是运行在HandlerThread中的 是子线程 且 Looper没有调用Looper.prepare() 所以 不能Toast.

    注意:
    子线程调用Toast 需要在Toast前初始化Looper.prepare()

    3.stopSelf()和context.stopService()

    两者都是关闭服务的,stopSelf()是Service的方法,stopService()是Context的方法 调用这两个方法后会执行onDestory方法.

    注意:

    当onStartConmmand()方法未执行完毕时,调用stopService和stopSel()时 不会立即执行onDestory 会等待onstartCommand方法执行完在执行.

    问题

    1:startServce() 生命周期
    2:stopService() 生命周期
    3:stop() 和stopSelf() 区别
    4:startService()和bindService()
    5:IntentService()
    6:Toast 在Service 中显示

    相关文章

      网友评论

          本文标题:Android源码-Service(一)

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