【问题标题】:BroadcastReceiver, IntentService and GPS callbacksBroadcastReceiver、IntentService 和 GPS 回调
【发布时间】:2012-04-11 00:02:44
【问题描述】:

我正在使用广播接收器,需要根据收到的 SMS 消息找到手机的 GPS 位置。

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

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

我听说在 BroadcastReceiver 中使用线程会导致灾难,所以甚至没有尝试过。

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

有没有更好的方法来做到这一点?我必须使用广播接收器,但需要一种让 GPS 在 15-20 秒内找到位置的智能方法。

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

【问题讨论】:

    标签: android callback gps broadcastreceiver intentservice


    【解决方案1】:

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

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

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

    这就是为什么IntentService 不能很好地解决您的问题。你需要一个普通的Service,但是你在自己的后台线程中工作,完成后停止服务等等。

    我以LocationPoller 的形式对此进行了概念验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      相关资源
      最近更新 更多