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」,直到無線網絡沒有完全啓用!
我們展示您的AsyncTask代碼和調用。您可能會弄錯訂單。 – 323go
我編輯了我的代碼.. – rootpanthera
沒錯,所以你確實弄錯了訂單。發生。首先,你沒有執行AsyncTask - 你需要調用'new Async()。execute()'來關閉它。最後,您需要在Receiver for NetworkState中啓動您的服務。系統會在Wifi可用時通知您,然後您開始提供服務。讓服務自己監聽網絡狀態並採取相應的行動可能會更加優雅。 – 323go