在 Android 中解除绑定后,如何让服务与听众保持活力?

Posted

技术标签:

【中文标题】在 Android 中解除绑定后,如何让服务与听众保持活力?【英文标题】:How to keep a Service with listeners alive after unbind in Android? 【发布时间】:2014-05-18 17:15:55 【问题描述】:

我目前正在使用 XMPP 构建一个聊天应用程序。我创建了一个服务来处理连接和传入消息,并添加了所需的不同侦听器。

然而,问题是,每当 Activity 调用服务上的 unbind 时(例如,当用户将应用程序置于后台时,当 Activity 暂停或停止时)服务就会被破坏,即使它内部有侦听器(例如作为聊天监听器、消息监听器等。)

当应用程序在后台运行时,如何让我的服务保持活跃以便能够接收消息?我读到使用前台服务是非常不受欢迎的,所以如果可能的话,我宁愿避免这样做。

【问题讨论】:

【参考方案1】:

我最近在开发我的应用程序时确实遇到了这个问题。

诀窍是自己启动Service,然后使用Intent 绑定到它。当您解除绑定时,Service 仍将继续运行。

Intent i = new Intent(this, DataService.class);
startService(i); 
bindService(i, this, Context.BIND_AUTO_CREATE);

【讨论】:

嗯,这是正确的,但是您再也没有机会在代码中的其他地方取消绑定后自动销毁服务。然后你必须手动停止它。 很好的解决方案!我一直想知道使用bind\unbind的正常启动是否会起作用,我找不到它作为一个单独的问题,+1 fort. 那已经不行了。服务仍然被破坏。对于较新的 SDK,需要前台服务。看这里***.com/a/45047542/617889

以上是关于在 Android 中解除绑定后,如何让服务与听众保持活力?的主要内容,如果未能解决你的问题,请参考以下文章

如何在华为的核心交换机上解除服务器IP与MAC地址的绑定,求大神指点

为啥单击两次后我的事件侦听器与按钮解除绑定?

微信小程序被绑定了怎么解除?

Android 服务的限制

Android将服务绑定到自己的类

如何取消华为帐号与手机号绑定