在 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 中解除绑定后,如何让服务与听众保持活力?的主要内容,如果未能解决你的问题,请参考以下文章