我正在开发我的第一个 android 应用程序,它的作用是它有一个活动,在登录后启动一个服务,该服务在特定时间段后或每当用户位置发生变化时将用户位置 ping 到服务器。现在对于从服务到我正在使用 BroadcastReceiver 的活动的通信。
将位置记录到服务器后的服务会广播一条消息,我的活动会收到该消息并相应地更新 UI。现在一切都很好,但是当我从后台删除我的活动而我的服务仍在后台运行时,会发生什么情况是,每当服务在服务器上记录位置并广播消息时,它就会崩溃并显示一条消息在屏幕上显示您的应用程序已停止。
我认为android广播系统期望我的活动能够接收广播,当它找不到它时,它会崩溃服务。
我想要的是,如果我的活动在附近,它将接收广播,但如果不是,则应该忽略广播。它不应该使我的服务崩溃。
我通过在 onResume() 中注册服务并在 onPause() 中取消注册来遵循正确的步骤。此外,我正在动态注册服务,而不是在清单中。