我们可以在 timertask 中使用 requestlocationupdates 吗?

Posted

技术标签:

【中文标题】我们可以在 timertask 中使用 requestlocationupdates 吗?【英文标题】:Can we use requestlocationupdate in timertask? 【发布时间】:2018-10-31 23:25:29 【问题描述】:

我必须使用每五分钟调用一次 timertask 类

LocationServices.FusedLocationApi.requestLocationUpdates(Utils.googleApiClient, 
mlocationrequest, this);

使用 onLocationChanged() 查找位置并将位置存储在 DB 中。

如何实现?请帮助我,我试过了,但它不起作用。

【问题讨论】:

您可以在 LocationRequest 对象上使用最小间隔为 5 分钟 即使在应用关闭后直到卸载应用也需要获取位置。所以我需要使用 timertask how to use FusedLocationApi.requestLocationUpdates on timertask的可能重复 【参考方案1】:

您应该使用下面的代码,您将在 MIN_TIME 和 MIN_DISTANCE 获得位置 onLocationChanged() - MIN_TIME:位置更新之间的最小时间间隔,以毫秒为单位 - MIN_DISTANCE:位置更新之间的最小距离,以米为单位

 LocationManager mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        if (mLocationManager != null) 
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, TIME_OFFSET, MIN_DISTANCE, new android.location.LocationListener() 
                @Override
                public void onLocationChanged(Location location) 
                    onUpdateLocation(location);
                    Log.e("update location", location.getLatitude() + "------" + location.getLongitude());
                

                @Override
                public void onStatusChanged(String s, int i, Bundle bundle) 

                

                @Override
                public void onProviderEnabled(String s) 

                

                @Override
                public void onProviderDisabled(String s) 

                
            );
        

【讨论】:

以上是关于我们可以在 timertask 中使用 requestlocationupdates 吗?的主要内容,如果未能解决你的问题,请参考以下文章

在Listener(监听器)定时启动的TimerTask(定时任务)中使用Spring@Service注解的bean

Java线程和多线程——TimerTask

Timer和TimerTask定时器使用

java中TimerTask 如何才能停止呢

TimerTask的run()方法里面如何调用service层里面的方法

JDK源码(二十六):Timer