在活动被销毁后运行Bindservice
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在活动被销毁后运行Bindservice相关的知识,希望对你有一定的参考价值。
我正在创建一个带有活页夹类型服务的音乐播放器。我知道如果我使用活页夹我应该在活动中使用stopSelf但是有什么方法可以在活动中运行服务destroy.I我的活动中有一个搜索栏。如果我在OnDestroy中使用startService我在服务中遇到错误。
主要信息
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"/>
我正在用线程启动服务。
答案
您可以从activity调用startService然后bindService。这样当活动完成时可以解除绑定但音乐服务将继续播放直到停止自我被调用。所以使用两种机制都需要停止。
另一答案
好吧,据我所知,Servive属于线程,它已被创建**。
因此,如果您希望保持服务运行,则在“活动”关闭后,您必须从其他位置启动它。我推荐一个Application子类,或者你可以从一个Activity中创建它:new Thread(){... startServiceHere ...}。start();
Thread t = new Thread(){
public void run(){
getApplicationContext().bindService(
new Intent(getApplicationContext(), MyAndroidUpnpServiceImpl.class),
serviceConnection,
Context.BIND_AUTO_CREATE
);}
};
t.start();
//从@Samuh复制的服务代码
以上是关于在活动被销毁后运行Bindservice的主要内容,如果未能解决你的问题,请参考以下文章
用bind的方法启动service,调用者退出后,service也销毁?