Android的make方法每X秒运行一次(涉及gps和服务器调用)



我有一个小众应用程序,需要每隔几秒钟向服务器发送其位置。(不用担心手机的电池寿命)。如何让线程或其他东西每隔几秒执行一次?我有一个gpslistener,但其子类的名称是"onlocationchanged",它似乎只想提供信息,如果位置发生变化,我将需要一个更新的位置发送到服务器每次,虽然在一个间隔,我定义

我该怎么做呢?

洞察力欣赏

将其放置在服务的onCreate中。

  mTimer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
           // What you want to do goes here
         }
    }, 0, REFRESH_TIME);

REFRESH_TIMErun自身重复的频率或时间,单位为毫秒。

你不能直接问android当前的位置。GPS需要一些时间,可能无法使用。这是在这篇文章中说明的。

您可以使用user500865提到的计时器,然后像这样请求最后已知的位置

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 1, this);
Location l = null;
l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

您可以跟踪最后一个位置,如果新位置不同或相同,则可以执行一些逻辑操作。

方法requestLocationUpdates有以下参数:

minTime -通知的最小时间间隔,单位为毫秒。此字段仅用作节省电力的提示,位置更新之间的实际时间可能大于或小于此值。

minDistance -通知的最小距离间隔,单位为米

使用这些来自定义您想要获得位置更新的频率

最新更新