2013-01-16 104 views
1

在我的onCreate方法的主要活動中,我有一些代碼正在檢查是否啓用了wifi連接。如果它不是我試圖自動啓用它(現在非常重要)然後我想做其他的東西(開始服務..和其他東西)。它是非常重要的,它必須啓用之前繼續執行與執行!防止在程序流程中執行一些代碼

我已經嘗試了AsyncTask,但沒有運氣。 (代碼仍然在下面執行,在AsyncTask中的任務完成之前)。

如何實現某些代碼將執行AFTER某些任務完成後?

編輯:

我的onCreate在主要活動中

wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 

    if(!wifiManager.isWifiEnabled()) { 


     new Asyn(this, progress, wifiManager); 


     } 


    startService(new Intent(intentt)); 

ASYN類

public class Asyn extends AsyncTask<Context, Integer, Long> { 

private Context context; 
private ProgressDialog pd; 
private WifiManager wm; 

    public Asyn(Context context, ProgressDialog pd, WifiManager wm) { 
    this.context = context; 
    this.pd = pd; 
    this.wm = wm; 
    } 



@Override 
protected void onPreExecute() { 
    // TODO Auto-generated method stub 
    super.onPreExecute(); 
    pd = ProgressDialog.show(context, "", "Enabling wifi"); 

} 

@Override 
protected Long doInBackground(Context... params) { 

    wm.setWifiEnabled(true); 


    return null; 
} 

@Override 
protected void onPostExecute(Long result) { 
    // TODO Auto-generated method stub 
    super.onPostExecute(result); 

    pd.dismiss(); 

} 

}

我不想執行 「startService」,直到無線網絡沒有完全啓用!

+0

我們展示您的AsyncTask代碼和調用。您可能會弄錯訂單。 – 323go

+0

我編輯了我的代碼.. – rootpanthera

+1

沒錯,所以你確實弄錯了訂單。發生。首先,你沒有執行AsyncTask - 你需要調用'new Async()。execute()'來關閉它。最後,您需要在Receiver for NetworkState中啓動您的服務。系統會在Wifi可用時通知您,然後您開始提供服務。讓服務自己監聽網絡狀態並採取相應的行動可能會更加優雅。 – 323go

回答

0

異步任務不是解決方案,因爲啓動WIFI是您調用後不會假設的事情wm.setWifiEnabled(true); 您必須在WiFi狀態下添加廣播接收器。 請看看這個答案:

Listening WIFI state

我相信第二個答案,(不是被接受的)是你尋求