继续调用函数并显示进度条直到返回true?

时间:2014-07-26 22:42:05

标签: android google-maps

我需要运行此代码直到它运行,

LatLng current_pos = new LatLng(location.getLatitude(), location.getLongitude());
cp.SetCoordsCurrent(current_pos);

我注意到如果信号良好它工作正常但如果信号很弱则应用程序崩溃或抛出异常(使用try和catch)。 如何运行此代码直到获得坐标?此外,我需要在尝试修复时显示进度条。

2 个答案:

答案 0 :(得分:2)

你的问题不够明确,所以不是确切的答案,但试试这个:

移动代码以获取 AsyncTask 中的坐标并在doInBackground()中执行任务,并在preExecute中显示进度对话框,并在postExecute中隐藏该进度对话框,并检查如果已获得坐标,则设置坐标。

在此处阅读有关AsyncTask的更多信息:http://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:1)

为什么不把它放在while循环中?

while (true) {
    try {

        // If this throws any exception, then the `break` will 
        // be ignored and it jumps to `catch` clause.          
        LatLng current_pos = new LatLng(location.getLatitude(), location.getLongitude());
        cp.SetCoordsCurrent(current_pos);

        // If we get this far, then there was no exception
        // and we have the location. So we break the loop.
        Log.d("TAG", "Got the signal");
        break;

    } catch (Exception e) {
        Log.d("TAG", "Still weak signal" );
    }
}