Android 在活动被销毁后运行Bindservice
我正在创建一个带有活页夹类型服务的音乐播放器。我知道如果我在活动中使用活页夹,我应该在活动中使用stopSelf,但是否有任何方法可以在活动销毁时运行该服务。我的活动中有一个seekbar。如果我在OnDestroy中使用startService,我会在服务中出错 主要活动Android 在活动被销毁后运行Bindservice,android,binding,android-service,android-music-player,Android,Binding,Android Service,Android Music Player,我正在创建一个带有活页夹类型服务的音乐播放器。我知道如果我在活动中使用活页夹,我应该在活动中使用stopSelf,但是否有任何方法可以在活动销毁时运行该服务。我的活动中有一个seekbar。如果我在OnDestroy中使用startService,我会在服务中出错 主要活动 private ServiceConnection music=new ServiceConnection(){ @Override public void onServiceConnected(Compo
private ServiceConnection music=new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName p1, IBinder p2)
{
// TODO: Implement this method
MusicBinder binder=(MusicBinder)p2;
registerReceiver(broadcastReciever, new IntentFilter(MusicService.BROADCAST_ACTION));
musicSrv = binder.getService();
musicSrv.setList(songList);
musicBound = true;
}
@Override
public void onServiceDisconnected(ComponentName p1)
{
// TODO: Implement this method
if (mBroadCastIsRegistered)
{
try
{
unregisterReceiver(broadcastReciever);
mBroadCastIsRegistered = false;}
catch (Exception e)
{
e.printStackTrace();
Toast.makeText(getApplicationContext(), e.getClass().getName() + "" + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
musicBound = false;
}
};
显示
<service
android:name=".Musicservice"/>
我正在用线程启动服务 您可以启动服务,然后从活动中绑定服务。这样,当活动完成后可以解除绑定,但音乐服务将继续播放,直到调用stop self。因此,需要使用这两种机制才能停止。您可以启动服务,然后从活动中绑定服务。这样,当活动完成后可以解除绑定,但音乐服务将继续播放,直到调用stop self。因此,使用这两种机制都需要停止。就我所知,Servive属于创建它的线程** 因此,如果您想保持服务运行,在活动关闭后,您必须从其他位置启动它。我建议您使用一个应用程序子类,或者您可以通过以下活动执行:new Thread(){…startServiceHere…}.start()
//从@Samuh复制的服务代码,据我所知,Servive属于创建它的线程** 因此,如果您想保持服务运行,在活动关闭后,您必须从其他位置启动它。我建议您使用一个应用程序子类,或者您可以通过以下活动执行:new Thread(){…startServiceHere…}.start()
//从@Samuh复制的服务代码“我正在创建”-你能澄清一下吗?您是否正在创建音乐播放器?或者你只是在改编一些开源的东西?“我在创作”——你能澄清一下吗?您是否正在创建音乐播放器?或者你只是在修改一些开源代码?对不起,误解了你的问题。为什么要从OnDestroy启动服务?我想在活动被销毁后运行服务,但我听说如果我使用binder类型的服务。一旦使用的活动被销毁,服务就会被销毁。是的,请尝试上面的建议,当活动被销毁时,服务将继续运行。你的方法是哪一种如果是你的方法,请你解释一下。对不起,误解了你的问题。为什么要从OnDestroy启动服务?我想在活动被销毁后运行服务,但我听说如果我使用binder类型的服务。一旦使用的活动被销毁,服务就会被销毁。是的,请尝试上面的建议,当活动被销毁时,服务将继续运行。你的方法是哪一种如果这是你的方法,你能解释一下吗?谢谢。我将尝试此操作。尝试了您的代码,但如果我将我的应用程序从最近的任务中刷走,我将失败。我得到非法参数异常,服务未注册消息。您可以从清单和错误消息中添加一些代码吗?服务代码看起来怎么样?覆盖了哪些方法?编辑了问题。服务仅在UI线程中创建。将startService放在新线程中没有意义。谢谢karoly。我将尝试此操作。尝试了您的代码,但如果我将我的应用程序从最近的任务中刷走,我将失败。我得到非法参数异常,服务未注册消息。您可以从清单和错误消息中添加一些代码吗?服务代码看起来怎么样?覆盖了哪些方法?编辑了问题。服务仅在UI线程中创建。将startService放在新线程中没有意义。
Thread t = new Thread(){
public void run(){
getApplicationContext().bindService(
new Intent(getApplicationContext(), MyAndroidUpnpServiceImpl.class),
serviceConnection,
Context.BIND_AUTO_CREATE
);}
};
t.start();