2011-01-31 51 views
1

有沒有辦法阻止AsyncTask的doInBackground方法/線程啓動,直到在onPreExecute方法中顯示的AlertDialog被解除爲止?在AsyncTask onPreExecute中創建AlertDialog直到停用doInBackground

doInBackground僅用於onPreExecute完成時運行,但據我所知,有一個打開的AlertDialog不會停止onPreExecute完成。

詳細信息: 我現在正在手機上,因此無法提供代碼示例,但代碼概述是它是一個應用程序,需要的數據只能通過移動數據訪問,因爲它們位於電信網絡上。我的getData asynctask的preExec首先檢查wifi是否打開,如果是,則顯示帶有禁用Wifi和取消選項的警報對話框。

取消應該結束任務,並禁用WiFi應該,以及,禁用WiFi。然後doInBg方法檢查移動數據連接是否啓動,如果不進入睡眠循環,則直接進入睡眠循環。一旦啓動,doInBg就會獲取數據...

目前,如果wifi已啓動,doInBg會在對話結束前啓動,直到導致移動連接出現爲止......這會導致到我想避免的潛在問題。

回答

0

您可以嘗試在某處啓動它以檢查您的wifi是否已啓動,然後使用AlertDialogListener來捕捉AlertDIalog中按鈕的動作。那麼你可以在AlertDialogListener中啓動你的Async。

+0

這就是我現在的樣子,除了它意味着在所有需要數據的地方重複對話代碼......可能,但結構不夠優雅。我也考慮在onPreExecute結尾處添加一個「while(!dialogGone)」樣式循環,並使用onDismiss偵聽器將dialogGone設置爲true,但它也缺乏優雅感......我想最終我可能會完全拋棄對話框並通過吐司通知用戶禁用wifi。 – Greg

+0

只是爲了更新,我確實最終完全擺脫了對話。 :) – Greg

相關問題