2012-04-10 122 views
1

我使用的是广播接收器,并需要找到根据收到的短信为手机的GPS定位。广播接收器,IntentService和GPS回调

我使用了一个相当标准的类上的回调返回LocationResult但如果我使用,在广播接收器类,那么它可能需要太长时间,并获得由OS死亡。

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

我听说使用线程在一个广播接收器是一个灾难所以甚至没有尝试。

我现在使用IntentService排队传入的请求和处理GPS定位仪。我的问题是如何使用回调代码,以便它不会在onHandleIntent完成时死亡?我想过使用睡眠,但它看起来并不像是一个完美的解决方案。

有没有更好的方式来做到这一点?我必须使用BroadcastReceiver,但需要一种让GPS在15-20秒内找到位置的巧妙方法。

任何想法,将最赞赏! (Android的noob在这里)。

回答

0

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

这意味着你正在主应用程序线程上工作,这是你总是想避免的,包括在服务中。请记住,在主应用程序线程上调用了诸如onStartCommand()之类的方法。

我的问题是如何使用代码与一个回调,这样,当onHandleIntent完成它不会死?

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

我有一个LocationPoller形式的概念验证实现。