美文网首页
Service之一

Service之一

作者: xandone | 来源:发表于2017-04-12 16:17 被阅读5次

    一.简介
    Service组件不提供界面,一般处于后台用于耗时计算,常见的使用如:定位,更新等..
    Service有两种状态:启动状态和绑定状态。Service运行在UI线程中,因此需要进行耗时计算的时候,还是得开辟线程进行操作。
    二.详细
    前台进程:会显示在通知栏中,如音乐播放器,天气等Notification
    后台进程:没有界面交互,一般情况默认的Service

    1.启动状态:
    主要用于启动一个服务执行后台任务,不进行通信。
    启动:startService
    停止:stopService/stopSelf
    处于启动状态的Service都会运行在后台,不受启动它的其他组件(Activity..)的影响,无论Service被startService 多少次,Service都只会执行一次onCreate,只会创建一个Service对象,onStartCommand(Android2.0前使用的onStart)会被调用多次,次数和startService 一样。
    2.绑定状态:
    方法启动的服务要进行通信。
    启动:bindService 
    停止:unbindService/绑定的组件销毁(onDistroy)。
    同样Service只会执行一次onCreate,只会创建一个Service对象,onStartCommand则不会调用,解绑后Service自动销毁。
    Service的onBind如果返回null,则调用bindService会启动Service,但不会连接上Service,ServiceConnection.onServiceConnected不会被调用,使用unbindService销毁Service。
    3.启动和绑定的混合使用:
    Service只会执行一次onCreate,onStartCommand执行次数次数和startService 一样,bindService时不会执行onStartCommand,
    unbindService时不会销毁Service,停止:stopService/stopSelf。(注意:stopService前没有调用unbindService,或者bindService"依附"的Context组件没有销毁,该Service也不会销毁。停止的正确顺序是unbindService-stopService/stopSelf)
    4.注册相关

            <service
                android:name=".service.CheckAdService"//服务名
                android:exported="true"//其他应用能否访问该服务
                android:enabled="true"//否可以被系统实例化。true--系统默认启动,false--不启动。
                android:label="@string/app_name"//显示的服务名称
                android:process="com.yweather.app"//所运行进程名字
                />
    

    5.生命周期


    Paste_Image.png

    6.Thread和Service
    Thread的优先级低于Service,Service可以跨进程使用,Service占用的资源较Thread更多,
    大部分情况需要交互的时候选择Service,不需要时选择Thread,当然也根据该执行的任务的重要性具体判断。

    相关文章

      网友评论

          本文标题:Service之一

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