Android 使用带有片段的活动绑定服务
我对绑定服务有疑问。我有父活动和几个片段,我用活动绑定和解除绑定服务,现在我可以在片段中访问该服务了吗?我需要在片段中使用ServiceConnection。是的,您可以通过以下方式访问片段中父活动的服务:Android 使用带有片段的活动绑定服务,android,android-fragments,android-service,Android,Android Fragments,Android Service,我对绑定服务有疑问。我有父活动和几个片段,我用活动绑定和解除绑定服务,现在我可以在片段中访问该服务了吗?我需要在片段中使用ServiceConnection。是的,您可以通过以下方式访问片段中父活动的服务: getActivity().getMyService() 是的,您可以通过以下方式访问片段中父活动的服务: getActivity().getMyService() ===============在您的活动中================= callbackFragmentSe
getActivity().getMyService()
是的,您可以通过以下方式访问片段中父活动的服务:
getActivity().getMyService()
===============在您的活动中=================
callbackFragmentServiceConnection callbackfragment;
public interface callbackFragmentServiceConnection{
public void servicefun(MusicPlayService musicPlayService);
}
public void registerClientFragment(Fragment fragment){
this.callbackfragment = (callbackFragmentServiceConnection)fragment;
}
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
mBound = true;
callbackfragment.servicefun(musicPlayService);
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
public class FragmentLibraryTrack extends Fragment implements
MainActivity.callbackFragmentServiceConnection {
MainActivity mainActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mainActivity= (MainActivity) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mainActivity.registerClientFragment(this);
}
@Override
public void servicefun(MusicPlayService musicPlayService) {
Log.e("reached sucessfully","yes");
}
}
========================在您的片段中=============
callbackFragmentServiceConnection callbackfragment;
public interface callbackFragmentServiceConnection{
public void servicefun(MusicPlayService musicPlayService);
}
public void registerClientFragment(Fragment fragment){
this.callbackfragment = (callbackFragmentServiceConnection)fragment;
}
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
mBound = true;
callbackfragment.servicefun(musicPlayService);
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
public class FragmentLibraryTrack extends Fragment implements
MainActivity.callbackFragmentServiceConnection {
MainActivity mainActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mainActivity= (MainActivity) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mainActivity.registerClientFragment(this);
}
@Override
public void servicefun(MusicPlayService musicPlayService) {
Log.e("reached sucessfully","yes");
}
}
===============在您的活动中=================
callbackFragmentServiceConnection callbackfragment;
public interface callbackFragmentServiceConnection{
public void servicefun(MusicPlayService musicPlayService);
}
public void registerClientFragment(Fragment fragment){
this.callbackfragment = (callbackFragmentServiceConnection)fragment;
}
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
mBound = true;
callbackfragment.servicefun(musicPlayService);
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
public class FragmentLibraryTrack extends Fragment implements
MainActivity.callbackFragmentServiceConnection {
MainActivity mainActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mainActivity= (MainActivity) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mainActivity.registerClientFragment(this);
}
@Override
public void servicefun(MusicPlayService musicPlayService) {
Log.e("reached sucessfully","yes");
}
}
========================在您的片段中=============
callbackFragmentServiceConnection callbackfragment;
public interface callbackFragmentServiceConnection{
public void servicefun(MusicPlayService musicPlayService);
}
public void registerClientFragment(Fragment fragment){
this.callbackfragment = (callbackFragmentServiceConnection)fragment;
}
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
mBound = true;
callbackfragment.servicefun(musicPlayService);
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
public class FragmentLibraryTrack extends Fragment implements
MainActivity.callbackFragmentServiceConnection {
MainActivity mainActivity;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mainActivity= (MainActivity) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mainActivity.registerClientFragment(this);
}
@Override
public void servicefun(MusicPlayService musicPlayService) {
Log.e("reached sucessfully","yes");
}
}
我添加了connectionService=newintent(getApplicationContext(),XMPPService.class);bindService(connectionService,this,Context.BIND\u AUTO\u CREATE);在我的活动中…什么是getMyService()@Richa getMyService()将是您对本地创建的服务的引用。您可以在此处找到更多详细信息。希望这能澄清您的疑问。我添加了connectionService=newintent(getApplicationContext(),XMPPService.class);bindService(connectionService,this,Context.BIND\u AUTO\u CREATE);在我的活动中…什么是getMyService()@Richa getMyService()将是您对本地创建的服务的引用。您可以在此处找到更多详细信息。希望这能澄清您的疑问。绑定服务可能重复到主机活动和片段应该与服务一起工作,认为活动需要回调的帮助。绑定服务可能重复到主机活动和片段应该与服务一起工作,认为活动需要回调的帮助已经完成。但是我们不能将代码仅保留在活动中,并访问ServiceConnection。因为在每个片段中绑定和解除绑定都不是好主意,这是我已经做过的。但是我们不能只在活动中保存代码,并访问ServiceConnection。因为在每个片段中绑定和解除绑定都不是好主意