美文网首页
service的一些基础知识

service的一些基础知识

作者: Preupen | 来源:发表于2018-09-14 15:59 被阅读0次

    service的启动方式有两种:
    startService():生命周期 startService()---onCreate()---onStartConmom()---onDestroy();
    这种方式启动的话,需要注意一下几个问题:
    1.:当我们通过startService被调用以后,多次在调用startService(),onCreate()方法也只会被调用一次,而onStartConmon()
    会被多次调用当我们调用stopService()的时候,onDestroy()就会被调用,从而销毁服务。
    2.当我们通过 startService启动时候,通过intent传值,在onStartConmon()方法中获取值的时候,一定要先判断intent是否为 null。
    bindService():生命周期 bindService()---onCreate()---onBind()---unBind()---onDestroy();
    bindService()这种方式进行启动service好处是更加便利activity中操作service,比如加入service中有几个方法,a,b ,如果要在
    activity中调用,在需要在activity获取ServiceConnection对象,通过ServiceConnection来获取service中内部类的类对象,然后通过这个类对象就可以调用类中的方法,当然这个类需要继承Binder对象。
    `private MyBindService service;

    private ServiceConnection conn = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder binder) {
            MyBindService.MyBinder myBinder = (MyBindService.MyBinder) binder;
            service = myBinder.getService();
        }
    
        @Override
        public void onServiceDisconnected(ComponentName name) {
            Log.i("Kathy", "ActivityA - onServiceDisconnected");
        }
    };`
    

    下面代码是service的类部类
    public class MyBinder extends Binder { public MyBindService getService() { return MyBindService.this; } }
    bindService的特点
    (1)每次调用服务必须首先bindService,执行unbindService后不能调用;
    (2)服务的生命周期受限于UI线程。一旦应用(Activity)终止,服务将onDestory销毁;
    (3)可以在绑定后调用服务里的功能。

    混合调用(须按顺序操作):
    (1)首先在主界面创建时,startService(intent)启动方式开启服务,保证服务长期后台运行;
    (2)然后调用服务时,bindService(intent, connection, BIND_AUTO_CREATE)绑定方式绑定服务,这样可
    以调用服务的方法;
    (3)调用服务功能结束后,unbindService(connection)解除绑定服务,置空中介对象;
    (4)最后不再需要服务时,stopService(intent)终止服务。

    相关文章

      网友评论

          本文标题:service的一些基础知识

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