2015-10-21 61 views
0

我有一个服务,需要从一个活动得到一些输入。为了让他们沟通,我将活动与我的服务联系起来,沟通效果很好。但是,一旦该活动关闭并从服务中解除绑定,该服务也会停止。 是否可以在不杀死服务的情况下解除绑定?Android服务关闭后取消绑定

这是我如何启动该服务,并将其绑定:

Intent serviceIntent = new Intent(this, MyService.class); 
//Add user preferences to the service 
serviceIntent.putExtra("panel", tbtnBar.isChecked()); 
serviceIntent.putExtra("sensor", tbtnDown.isChecked()); 
//Start the service 
startService(serviceIntent); 

//Bind the service 
isBound= bindService(serviceIntent, mConnection,0); 

服务是绑定在的onDestroy:

@Override 
    public void onDestroy() 
    { 
     if(isBound) 
      unbindService(mConnection); 

     super.onDestroy(); 
    } 

我,四处搜寻,所有帖子只是说来启动服务在绑定它之前,不要使用BIND_AUTO_CREATE标志。我似乎在做什么。

+0

“但是,一旦活动关闭并且不受任何限制,服务就会停止” - 您如何确定这一点? – CommonsWare

+0

运行时,我有一个明亮的红色窗口弹出,告诉我它的。当服务关闭窗口消失。 – Bone

+0

你在哪里添加和删除服务中的“鲜红的窗口弹出”? – CommonsWare

回答

0

是否可以在不杀死服务的情况下解除绑定?

是的,这是可能的。例如,请将服务从onStartCommand()方法中返回START_STICKY,并且一旦完成本应该执行的任何操作,请致电stopSelf()

这种模式的一个用例是音频重放,所以不妨检查文档"Service"以及"MediaPlayer"来获取一些样本。

+0

我意识到我的问题并不是我的服务正在关闭,而是在活动结束后重新启动。为了从重启服务中的活动中获取所需的信息,我通过使用SharedPreferences保存值并读取并在重新启动服务时读取它们来做了一个解决方法。 – Bone

+0

@骨 - 听起来不错:) – 0X0nosugar