我知道这个问题已被多次询问,但我找不到符合我问题的答案。
我有一个应用程序,每30分钟必须知道用户的位置(为了做特定的事情)。 我不希望应用程序检查位置是否已更改。我只需要每30分钟一次,所以我不想使用onLocationChanged()方法。
我使用“被动”方式,而不是gps或网络方式,所以我不需要“找到”最好的提供商,我已经知道了。
有办法吗?
非常感谢。
于连
答案 0 :(得分:2)
您可以每30分钟设置一次警报并检查getLastKnownLocation。但是,如果至少有1个应用程序注册了位置更新,则最后一个已知位置才会主动更新 - 因此您仍需要注册自己以确保更新变量。
AlarmManager mgr=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
registerReceiver( receiver, new IntentFilter("broadcast reciever class name here") );
Intent i=new Intent("broadcast reciever class name here");
PendingIntent pi=PendingIntent.getBroadcast(this, 0, i, 0);
mgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 30*60*1000, pi);
这将每30分钟设置一次警报。如果您希望在活动停止后继续此操作,请将其设置为“服务”。