Android / Java - 在执行下一个函数之前等待AsyncTask结束

时间:2014-11-24 13:03:50

标签: java android android-asynctask

我正在创建一个应用程序,该应用程序会在其MainActivity中显示已配置的Wi-Fi网络列表。现在,在获取已配置网络列表之前,我的应用程序会检查Wi-Fi是否已打开。如果没有,则会显示AlertDialog,其中包含"打开Wi-Fi" Button会触发AsyncTask打开Wi -Fi。

现在,我正在使用此代码获取已配置的Wi-Fi网络列表

@SuppressWarnings("deprecation")
private ArrayList<String> getAvailableNetworks() {

    manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    availableNetworks = new ArrayList<String>();

    if (!manager.isWifiEnabled()) {
        showDialog(2);
    }

    if (manager.isWifiEnabled()) {

        configuredNetworks = manager.getConfiguredNetworks();

        for (int i = 0; i < configuredNetworks.size(); i++) {
                    availableNetworks.add(configuredNetworks.get(i).SSID.replaceAll("\"", ""));
        }
    }

    return availableNetworks;
}

现在,问题在于,当应用发现Wi-Fi已关闭时,它只会显示使用AlertDialog的{​​{1}}并转到下一行代码,已配置的网络列表完全空白。

如何让它等到showDialog(2);完成打开Wi-Fi才能转到下一行代码?

先谢谢。

1 个答案:

答案 0 :(得分:1)

你可以在OnPreExecute上启动一个Indeterminate Progress对话框(unCancelable),然后在onPostExecute中将其关闭

如果您不希望代码在asyncTask完成之前开始执行,只需将该代码放入AsyncTask的onPostExecute方法