Service的启动方式
Service的启动方式:
两种启动模式,一种是非绑定启动模式,另一种是绑定启动模式。
一、startservice方式启动
1 Intent intent = new Intent(this, FirstService.class); 2 // 开启服务 3 startService(intent);
二、绑定启动模式
bindService
Intent intent = new Intent(this,FirstService.class); //连接到服务FirstService conn = new MyConn(); bindService(intent,conn, BIND_AUTO_CREATE);
区别:
1.非绑定模式启动的话,启动之后就会在内存中长期运行,直到手动停止它
2.绑定模式启动,是跟可视化界面绑定的,界面看得见的话,服务就存在;按home键或者back键回到桌面的话服务就挂掉了。
绑定模式多次绑定跟一次绑定有什么区别:
多次绑定,不会报错,什么生命周期方法都不会执行,
解绑只能解绑一次,多次解绑报错
ps:混合方式启动服务,可以保证服务长期运行,并能调用服务里的方法,做法如下:
1.先用startservice保证服务在系统里长期运行;
2.再用onbind方法,获得中间人对象(Ibinder),即可调用服务里的方法
3.用unbind可以解绑
4.用stopservice可以停止服务