2014-02-21 124 views
0

我做了一个通过短信发送GPS坐标的应用程序。获取GPS坐标后发送消息

所以当你点击按钮时,它会尝试更新位置,但由于GPS坐标更新需要10-15秒,它将跳转到获取lastknowLocation并发送短信。

-lastKnowLocation已过期或0.0,0.0。

如何推迟发送短信,直到它获取新的GPS坐标?

回答

0

您可以使用BroadCastReceiver接收您的新gps位置:BroadcastReceiver for location。你会使用requestLocationUpdates版本的PendingIntent参数,此方法允许接收,即使你的应用程序被杀害的新坐标,从文档:

此方法适用于后台使用的情况下,更具体 用于接收位置更新,即使该应用程序已被该系统杀死了 。为此,请使用PendingIntent作为启动的 服务。对于前台使用情况,建议使用 方法的LocationListener版本,请参阅requestLocationUpdates(LocationRequest, LocationListener)。

在您的广播onReceive内,我会触发一个IntentService,它将使用wakelock:https://github.com/commonsguy/cwac-wakeful。这是因为广播接收机的处理过程应该尽可能短,它总是更好地启动服务 - 即。 IntentService,并防止android在处理广播后杀死你的应用程序和服务(android允许这么做 - 但大多数情况下,如果你的应用程序在发射pendingintent之前被杀死),你可以使用wakelock。在您的IntentService中,您可以安全地发送您的电子邮件。您可以将短信信息保存在您的应用的共享首选项中。

所有这些并发症是因为用户可以在点击按钮后按Home按钮,你的应用程序实际上可能会被杀死。