gpt4 book ai didi

java - 解绑后安卓服务关闭

转载 作者:行者123 更新时间:2023-12-05 00:01:24 25 4
gpt4 key购买 nike

我有一个服务需要从 Activity 中获取一些输入。为了让他们进行交流,我将 Activity 绑定(bind)到我的服务,并且交流效果很好。但是,一旦 Activity 关闭并与服务解除绑定(bind),服务也会停止。是否可以在不终止服务的情况下解除绑定(bind)?

这是我启动服务并绑定(bind)它的方式:

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 中未绑定(bind):

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

super.onDestroy();
}

我四处搜索,所有帖子都只是说在绑定(bind)之前启动服务,而不是使用 BIND_AUTO_CREATE 标志。我似乎正在做。

最佳答案

看!这很棘手。例如,我们说可以通过调用 startService(intent)bindService(intent,serviceConnection,BIND_AUTO_CREATE) 来启动服务。

当服务被 bindService 启动时,服务的 onStartCommand 不会在 onCreate 之后被调用,实际上 onBind 被调用。

由 bindService(intent,serviceConnection,BIND_AUTO_CREATE) 启动的服务在绑定(bind)到它的 Activity 被销毁后立即被销毁。

但是当我们从 startService(intent) 启动服务时,onStartCommandoncreate 之后被触发,我们可以从该方法返回 start_sticky。在这种情况下,服务永远不会被销毁,除非系统这样做,无论服务连接绑定(bind)和解除绑定(bind)。该服务将留在那里。

关于java - 解绑后安卓服务关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33267793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com