1

我正在使用 BroadcastReceiver,需要根据传入的 SMS 消息找到手机的 GPS 位置。

我正在使用一个非常标准的类,它在回调中返回 LocationResult 但如果我在 BroadcastReceiver 类中使用它,那么它可能需要很长时间并被操作系统杀死。

我试过使用服务,但如果两个事件同时发生,它会导致 ANR 问题。

我听说在 BroadcastReceiver 中使用线程是灾难的根源,所以甚至没有尝试过。

我现在使用 IntentService 对传入请求进行排队并处理 GPS 位置查找器。我的问题是如何使用带有回调的代码,以便在 onHandleIntent 完成时它不会死?我考虑过使用睡眠,但它似乎不是一个完美的解决方案。

有一个更好的方法吗?我必须使用广播接收器,但需要一种聪明的方法让 GPS 在 15-20 秒内找到位置。

任何想法将不胜感激!(这里是安卓菜鸟)。

4

1 回答 1

0

我试过使用服务,但如果两个事件同时发生,它会导致 ANR 问题。

这意味着您正在主应用程序线程上工作,这是您一直想要避免的事情,包括在服务中。请记住,onStartCommand()在主应用程序线程上调用类似的方法。

我的问题是如何使用带有回调的代码,以便在 onHandleIntent 完成时它不会死?

这就是为什么IntentService不是您的问题的好答案。您需要一个常规的Service,但您在自己的后台线程中工作的一个,完成后停止服务等。

我有一个以LocationPoller.

于 2012-04-10T16:02:44.193 回答