绑定型service

来源:互联网 发布:华为整体网络解决方案 编辑:程序博客网 时间:2024/06/11 16:15

/*
* Google要求从android5.0开始必须使用显示Intent启动service组件;
*
* 启动型与绑定型的区别:
* -启动型:Activity和Service相对独立,Activity销毁,服务不会终止;
* –生命周期:一个服务只会创建一次、销毁一次,但是可以开始多次,
* 即onCreate和onDestroy方法只会被调用一次,而onStart方法会被调用很多次
* -绑定型:Activity和Service绑定,Activity退出,服务也自动销毁;
*
* Service与Avtivity通信
* • Service与Avtivity之间使用ServiceConnection接口进行通信
* ServiceConnection介绍
* – ServiceConnection回调接口用于接收onServiceConnected和onServiceDisconnected事件
* – 由于bindService方法是异步执行的,即bindService方法返回后,并不能立刻获取Service的实例,必须
* 响应onServiceConnected事件,在这个事件中获取Service的实例,然后执行一些初始化的工作;
* • Service与Avtivity通信原理
* Activity调用bindService方法,得到MyStartService对象的一个引用,这样Activity可以直接 调用到MyStartService中的方法;
*/

public class MainActivity extends Activity implements OnClickListener{    Button bindService, unbindService;    Intent intent;    ServiceConnection conn = new ServiceConnection()     {        @Override        public void onServiceDisconnected(ComponentName name) //服务异常时调用;        {            System.out.println("onServiceDisconnected...");        }        @Override        public void onServiceConnected(ComponentName name, IBinder service) //绑定成功后回调的方法;        {            MyBinder myBinder = (MyBinder) service;            myBinder.method();        }    };    @Override    protected void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        bindService = (Button)findViewById(R.id.bindService);        unbindService = (Button)findViewById(R.id.unbindService);        bindService.setOnClickListener(this);        unbindService.setOnClickListener(this);        intent = new Intent(this, MyBindService.class);    }    @Override    public void onClick(View v)     {        switch(v.getId())        {        case R.id.bindService:            bindService(intent, conn, BIND_AUTO_CREATE);            //异步绑定,第3个参数为0时,service不自动创建,ServiceConnection接口的方法不执行;            break;        case R.id.unbindService:            unbindService(conn); //接触绑定;            break;              }    }}
public class MyBindService extends Service{    public class MyBinder extends Binder    {        public void method()         {            System.out.println("MyBinder.method()...");        }    }    @Override    public IBinder onBind(Intent intent)     {        IBinder iBinder = new MyBinder();        return iBinder;    }    @Override    public void onCreate()     {        super.onCreate();        System.out.println("service is created...");    }    @Override    public void onDestroy()     {        super.onDestroy();        System.out.println("service is destoryed...");    }}
0 0
原创粉丝点击