0

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

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

我认为android广播系统期望我的活动能够接收广播,当它找不到它时,它会崩溃服务。

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

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

4

2 回答 2

0

您不应该使用bindService(intent)无限期startservice(intent)的内部时间。所以当您完成活动然后调用onUnbind().

onDestroy() 在活动中调用停止服务。

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

于 2014-04-29T09:14:49.580 回答
0

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

于 2016-04-17T07:45:55.470 回答