【问题标题】:Java Update Markers from a Google Map来自 Google 地图的 Java 更新标记
【发布时间】:2016-05-14 22:12:49
【问题描述】:

我正在尝试构建一个必须每 x 秒更新一次标记的应用程序。好的,我已经完成了。这是我的 onCreate 方法中的代码:

 h = new Handler();

        h.postDelayed(new Runnable(){
            public void run(){

                atualizaMapa();

                h.postDelayed(this, delay);
            }
        }, delay);

问题是:当我使用谷歌地图并拖动标记或打开 infoWindow 时,该过程有点锁定(我放了 x 秒),之后我可以正常拖动标记,之后10 秒它再次被锁定......在 10 秒一次又一次锁定之后......我已经尝试了一切,但没有成功。有人可以帮我解决这个问题吗?

标记在 atualizarMapa() 上更新,此方法访问我的 web 服务并获得 json 响应...

【问题讨论】:

    标签: java android google-maps marker


    【解决方案1】:

    使用postDelayed()方法,

    使 Runnable r 添加到消息队列中,在经过指定的时间后运行。可运行对象将在附加此处理程序的线程上运行。时基是 uptimeMillis()。在深度睡眠中花费的时间会增加执行的额外延迟。

    最重要的是,

    当发布或发送到Handler 时,您可以允许在消息队列准备好后立即处理该项目,或者指定处理之前的延迟或处理它的绝对时间.后两者允许您实现超时、滴答声和其他基于时间的行为。

    您使用的方法会影响您的应用或消息调度的行为。

    【讨论】:

    • 我能做些什么来解决这个问题?我意识到另一件事,当我在我的应用程序中使用 setPosition 方法时,只是这个命令,它不会延迟也不会制动,但是当我每 x 秒使用 for 命令获取数据时,它会制动应用程序。
    • 还有另一种方法可以每隔 x 秒执行一次以更新我在谷歌地图上的标记吗?一种不会破坏应用程序的方法?
    • 我想我已经添加了一个线程来执行此操作?我需要知道这个过程什么时候完成?像这样?
    猜你喜欢
    • 2020-09-17
    • 2017-10-17
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    相关资源
    最近更新 更多