我做了一个通过短信发送GPS坐标的应用程序。
因此,当您点击按钮时,它会尝试更新位置,但由于GPS坐标更新需要10-15秒,它将跳转到获取lastknowLocation并发送短信。
-lastKnowLocation已过时或0.0,0.0。
如何延迟发送短信,直到它获得新的GPS坐标?
答案 0 :(得分:0)
您可以使用BroadCastReceiver接收新的GPS地点:BroadcastReceiver for location。您可以将requestLocationUpdates
版本与PendingIntent参数一起使用,即使您的应用被杀,此方法也可以从文档中接收新坐标:
此方法更适用于后台用例 用于接收位置更新,即使应用程序已被杀死 系统。为此,请使用PendingIntent进行启动 服务。对于前台用例,LocationListener版本 建议使用方法,请参阅requestLocationUpdates(LocationRequest, LocationListener的)。
在广播onReceive中,我会触发一个使用wakelock的IntentService:https://github.com/commonsguy/cwac-wakeful。这是因为广播接收者处理应该总是尽可能短,它总是更好地启动服务 - 即。 IntentService,并且为了防止android在处理广播后杀死你的应用和服务(android允许这样做 - 但主要是如果你的应用程序在触发pendingintent之前被杀死)你使用wakelock。在IntentService内部,您可以安全地发送电子邮件。您可以在应用程序的sharedpreferences中保存短信息。
所有这些复杂情况是因为用户可以点击按钮,按下主页按钮,你的应用程序实际上可能会被杀死。