【问题标题】:Sending broadcast from the service to killed activity从服务发送广播到杀死的活动
【发布时间】:2013-08-19 11:02:11
【问题描述】:

我正在开发我的第一个 android 应用程序,它的作用是它有一个活动,在登录后启动一个服务,该服务会在一段时间后或每当用户位置发生变化时将用户位置 ping 到服务器。现在对于从服务到我正在使用 BroadcastReceiver 的活动的通信。

将位置记录到服务器后,服务会广播一条消息,我的活动接收到该消息并相应地更新 UI。现在一切都很好,但是当我从后台删除我的活动而我的服务仍在后台运行时,会发生什么情况是,每当服务在服务器上记录位置并广播消息时,它就会崩溃并显示一条消息在屏幕上显示您的应用程序已停止。

我认为 android 广播系统希望我的活动处于活动状态以接收广播,当它找不到它时,它会崩溃服务。

我想要的是,如果我的活动在附近,它将接收广播,但如果不是,则应该忽略广播。它不应该使我的服务崩溃。

我按照正确的步骤在 onResume() 中注册服务并在 onPause() 中取消注册。此外,我正在动态注册服务,而不是在清单中。

【问题讨论】:

    标签: android broadcastreceiver broadcast


    【解决方案1】:

    您应该使用bindService(intent) 而不是startservice(intent) 无限期的内部时间。所以当您完成活动然后调用onUnbind() 时,它会一直工作到您的活动绑定到您的服务。

    onDestroy()in Activity 调用停止服务。

    在清单中检查您的接收器未在此处注册。

    【讨论】:

      【解决方案2】:

      我在那里犯了一个愚蠢的错误。我正在将活动中定义的变量的引用传递给广播服务。当我的活动仍然存在时它运行良好,但是当我的活动被终止时,服务以空指针结束,更新后服务崩溃。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多