1

メイン アクティビティの onCreate メソッドには、wifi 接続が有効かどうかをチェックするコードがいくつかあります。そうでない場合は、自動的に有効にしようとしています(今は非常に重要です)。その後、他のものを作成したいと思います(サービスの開始など)。実行に進む前に有効にする必要があることは非常に重要です!

私はすでに AsyncTask を試しましたが、うまくいきませんでした。( AsyncTask のタスクが完了する前に、コードはまだ下で実行されています)。

特定のタスクが完了した後に一部のコードが実行されるようにするにはどうすればよいですか?

編集:

メインアクティビティでの私の onCreate

wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 

    if(!wifiManager.isWifiEnabled()) {


        new Asyn(this, progress, wifiManager);


        } 


    startService(new Intent(intentt));

非同期クラス

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();

}

}

wifiが完全に有効になるまで「startService」を実行したくありません!

4

1 に答える 1

0

非同期タスクは解決策ではありません。WIFI の開始は、呼び出し後に発生すると想定できないためですwm.setWifiEnabled(true); 。WiFi 状態でブロードキャスト レシーバーを追加する必要があります。この答えを見てください:

リッスンWIFI状態

2番目の答え(受け入れられたものではありません)があなたが求めているものだと思います

于 2013-01-16T21:45:53.200 に答える