android service 之 Binder
16lz
2021-01-24
1,创建MusicPlayService继承Service
publicclassMusicPlayServiceextendsService{}
2, 在MusicPlayService中创建内部类Mybinder继承Binder
publicfinalclassMybinderextendsBinder{publicMusicPlayServicegetService(){returnMusicPlayService.this;}}
3, 重写onBinder()方法,反回内部类Mybinder实例对象
publicIBinderonBind(Intentarg0){//TODOAuto-generatedmethodstubreturnnewMybinder();}
4,重写onCreate()
publicvoidonCreate(){//TODOAuto-generatedmethodstubToast.makeText(this,"MusicSeviceonCreate()",Toast.LENGTH_SHORT).show();Log.e("test","--->onCreate()");//musicplay=BackgroundMusicPlay.getBackgroundMusicPlay(this);super.onCreate();}
5,在activity中绑定service
MusicPlayServiceservice;//声明服务对象//绑定服务Intentintent2=newIntent(ShorMusicPlay.this,MusicPlayService.class);bindService(intent2,conn,BIND_AUTO_CREATE);//调用服务,通过第6步中的service=((Mybinder)arg1).getService();得到实例对象service.playMusic();//playMusic可自行在MusicPlayService中添加
6,在ServiceConnection的onServiceConnected得到MusicPlayService的实例对象
privateServiceConnectionconn=newServiceConnection(){@OverridepublicvoidonServiceConnected(ComponentNamearg0,IBinderarg1){//TODOAuto-generatedmethodstubLog.e("test","onServiceConnected");service=((Mybinder)arg1).getService();//得到MusicPlayService实例对象}@OverridepublicvoidonServiceDisconnected(ComponentNamearg0){//TODOAuto-generatedmethodstubLog.e("test","onServiceDisconnected");}};
7,在onDestroy()方法中解除绑定
protectedvoidonDestroy(){//TODOAuto-generatedmethodstubsuper.onDestroy();unbindService(conn);}
更多相关文章
- android中的 Handler机制
- Activity缺少无参默认构造方法,产生实例化错误InstantiationExcep
- Android开发常见异常和解决方案(二)
- Java OR Android
- android权限管理之PermissionsDispatcher使用
- Android(安卓)Model正确使用姿势——AutoValue
- Android(安卓)之 Bitmap 和 File 相互转换
- Android(安卓)- Handler is abstract, cannot be instantiated.
- 【Android(安卓)framework】AndroidManagerService初始化流程