【问题标题】:Triggering LocationListener's event manually手动触发 LocationListener 的事件
【发布时间】:2010-11-09 04:38:38
【问题描述】:

有没有办法手动触发LocationListeneronLocationChanged 方法中的代码?我猜它应该收到一个带有最后一个已知位置的Location 对象。

【问题讨论】:

    标签: android android-location


    【解决方案1】:

    当然,如果是你的 LocationListener - onLocationChanged() 是公共方法;只需使用您手头的任何 Location 对象调用它(也许让您的位置侦听器将其缓存在某处,或使用LocationManagergetLastKnownLocation 方法获取从特定提供者看到的最后一个位置并调用onLocationChanged()) .

    【讨论】:

    • 这看起来不错,但是由于该类在另一个类中并且我想从其他地方调用它,所以我选择将代码移动到超类的公共函数中,并从侦听器中调用它。谢谢!
    【解决方案2】:

    您可以使用LocationManagersetTestProviderLocation 方法模拟新位置,并在需要时调用已注册侦听器的onLocationChanged 方法。

    您应该检查reference page。你也有一个例子here

    【讨论】:

    • 我真的不想做模拟地点。当应用程序中发生其他事情时,我想触发侦听器内部的代码。
    • 如果您想执行与位置更改完全无关的代码,则不应在位置侦听器中包含该代码。我的回答说明了如何在不更改任何实际位置的情况下手动触发注册的侦听器。
    • 嗯,你可能是对的。我只是认为可能有一种方法可以做到这一点(因为它不是完全与位置变化无关)
    • 如果您只想按照 Yoni Samlan 的建议执行该方法,但您应该肯定更改您的问题标题,因为它表示您想要“触发事件”,这只发生在位置变化时。
    猜你喜欢
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多