我在这里有两项活动。 他们每个人都会与我尝试与结合的单个服务进行互动。
但是不是如果我在每个活动的每个 onStart()方法中加入绑定代码?
protected void onStart() {
super.onStart();
if(playIntent==null){
playIntent = new Intent(this, MusicService.class);
bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
startService(playIntent);
}
}
如果来自活动 - A ,我会转到活动 - B ,然后按“返回”按钮? 会没关系,因为Android会再次调用 onStart()方法, 这意味着再次重新绑定它?
从同一个Activity重新绑定两次是不好的做法还是什么?
我对活动过程的参考是from here.
答案 0 :(得分:3)
这是我在Android开发者网站上发现的:
您通常应该在匹配期间配对绑定和解除绑定 提出和 消除客户生命周期的瞬间。
例如:
如果您只需要在活动期间与服务进行互动 可见,你应该在onStart()期间绑定并在解除期间解除绑定 的onStop()。
如果您希望自己的活动收到回复,即使它是 在后台停止,然后你可以在onCreate()和 在onDestroy()期间取消绑定。
请注意,这意味着您的活动需要在其运行的整个过程中使用该服务(即使在后台),因此如果该服务在另一个过程中,那么您会增加该服务的权重过程,系统更有可能杀死它。
注意:在活动的onResume()和onPause()期间,通常不应该绑定和解除绑定,因为这些回调在每个生命周期转换时发生,您应该保持发生的处理在这些过渡到最低限度。此外,如果应用程序中的多个活动绑定到同一服务,并且其中两个活动之间存在转换,则可以销毁该服务并在当前活动解除绑定(暂停期间)之前(下一个绑定期间)(恢复期间)重新创建该服务。