我有问题。在我的应用程序中,我需要用户的当前位置。当我们有一个位置时(当我得到一个位置usig方法locationManager.getLastKnownLocation)时,它工作正常,但当我重新启动我的手机和位置消失(现金是空的,我猜)我得到这个日志并强制关闭应用程序按钮。我点击一个按钮,我的应用程序重新启动,然后它工作正常... 我现在问题是位置返回null ... 这是日志:
08-25 10:02:55.000: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:55.449: DEBUG/libgps(2006): onUnsol: cmd 0x04 plen 57
08-25 10:02:55.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: num_sv 0
08-25 10:02:55.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: used_in_fix_mask 00000000
08-25 10:02:55.503: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:55.503: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:55.503: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:56.006: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:56.006: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:56.006: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:56.449: DEBUG/libgps(2006): onUnsol: cmd 0x04 plen 57
08-25 10:02:56.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: num_sv 0
08-25 10:02:56.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: used_in_fix_mask 00000000
08-25 10:02:56.505: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:56.505: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:56.505: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:57.009: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:57.009: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:57.009: ERROR/GPS(2006): gen_timer_add_locked
答案 0 :(得分:0)
当您重新启动手机时,所有非持久性数据都将被清除,就像变量一样。如果您想保存您的位置,那么您应该使用database / sharedPreferences。
此外,您可以获得null
位置。所以您应该继续检查以处理。
您可以使用Timer类。
试试这样:
Timer timer1;
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
timer1=new Timer();
timer1.schedule(new GetLastLocation(), 20000);
以下代码将在20秒后执行。
class GetLastLocation extends TimerTask {
@Override
public void run() {
timer1.cancel();
lm.removeUpdates(locationListener)
Location loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
}
答案 1 :(得分:0)
请查看A Deep Dive Into Location ,了解如何获取位置。
答案 2 :(得分:0)
我设法解决了这个问题。我没有按钮创建AlertDialog并启动了requestLocationUpdates。在locationListener中,当位置改变时,我取消了AlertDialog并解决了我的问题:D 谢谢jainal和Torsten ......