java - Wait onLocationChanged(定位位置)

标签 java android android-asynctask location google-maps-android-api-2

我需要获取当前位置,然后 - 执行下一个代码。当这个方法完成时我怎么能等呢? onLocationChanged 被自动调用,这就是我遇到问题的原因。有人有任何想法如何做得更正确吗? 我让它变得非常愚蠢,在 OnLocationChanged() 中我调用了 onResume(),但这是个糟糕的主意。

    @Override
public void onLocationChanged(Location location) {

    final Location loc = location;

    Log.d("myLogs", "OnChange2");
    Log.d("myLogs", "2" + loc.getLatitude() + "," + loc.getLongitude());
    myLat = loc.getLatitude();
    myLong = location.getLongitude();
    onResume();

}

最佳答案

你可能想为此使用 AsyncTask。参见 Android find GPS location once, show loading dialog的答案。基本上在 onPreExecute 中,您可以启动对话框(它在调用 doInBackground 之前启动)。这意味着您要等到可以定位并显示对话框的时间。然后在 doInBackground 中就可以获取位置。完成后 onPostExecute 被调用。您可以从 onPostExecute 中停止。您可以检查该位置是否不为空,然后如果需要,也可以从 onPostExecute 内部调用其他函数。

这可能是一种方式。您可以从 AsyncTask Android example 中学习一个基本示例.您也可以先阅读文档 here并阅读 How to Get GPS Location Using AsyncTask? .

其他一些类似的有用问题:

Wait for current location - GPS - Android Dev

getting location instantly in android

希望这对您有所帮助。

关于java - Wait onLocationChanged(定位位置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393397/

相关文章:

java - AsyncTask新手问题

java - 引用文件的工作原理取决于它是否在 Eclipse 中运行

java - 将 AsyncTask 从类中调用到 MainActivity 中

java - 在JDK8中,我可以只使用一个流表达式来获得两个条件的结果吗?

Android 应用程序屏幕在启动时闪烁

java - 通过文件浏览器选择文件后,如何在 onActivityResult() 中使用 getContentResolver().query() 获取文件路径

android - ./gradlew 没有这样的文件或目录 - Android studio 2.3

android - AsyncTask Android 示例

java - 如何使 Java Protocol Buffer 类型可变? Protoc.exe 不生成二传手?

java - Android onCreate() 方法中的代码无法正常工作