簡體   English   中英

檢查設備是否可以連接互聯網,然后繼續輸入代碼

[英]Check if device has internet connection and then continue with code

我在看帖子:

檢測Android設備是否可以連接互聯網

和檢查互聯網連接的方法工作正常,唯一令我困擾的是我必須在后台線程中進行檢查(無法從主線程進行檢查)

我需要檢查是否有互聯網連接,得到答案后,我需要從該行代碼繼續。

問題是,如果我在后台thred(AsyncTask)中檢查連接,則main thred將創建新線程並繼續編譯其余代碼。

這是我的代碼:

if(dbAdapter.doesDbExist(this)){
        Log.e("Da li baza postoji", "postoji");
        if(hasActiveInternetConnection(this)){
            new DownloadAllProizvodiTask(1).execute();
        }
    }
    else {
        Log.e("Da li baza postoji", "ne postoji");
        if(hasActiveInternetConnection(this)){
            new DownloadAllProizvodiTask(2).execute();
        }
        else{
            Toast.makeText(this, "U need internet connection to download resorces", Toast.LENGTH_LONG);
            finish();
        }
    }

因此,我必須將hasActiveInternetConnection()方法放入asynctask中,並在完成時從if繼續執行。

有人可以給我一些建議嗎?

您只需對事物的順序進行重新整理,即可使其與AsyncTask一起使用。 您的AsyncTask應該看起來像這樣:

new AsycTask<Void, Void, Boolean>() {
  @Override Boolean doInBackground(Void... params) {
    return hasActiveInternetConnection(...);
  }

  @Override onPostExecute(Boolean result) {
    if(result) {
      new DownloadAllProizvodiTask(2).execute();
    } else {
      Toast.makeText(this, "U need internet connection to download resorces", Toast.LENGTH_LONG);
      finish();
    }
  }
}.execute();

在您的外部,只需開始執行此任務即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM