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

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

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

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

【问题讨论】:

    标签: android service chat


    【解决方案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,需要前台服务。看这里stackoverflow.com/a/45047542/617889
    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多