【问题标题】:Check if device has internet connection and then continue with code检查设备是否有互联网连接,然后继续执行代码
【发布时间】:2013-09-16 18:12:27
【问题描述】:

我在看帖子:

Detect if Android device has Internet connection

检查互联网连接的方法工作正常,唯一困扰我的是我必须在后台线程中检查(无法从主线程检查)

我需要检查是否有互联网连接,在我得到答案后,我需要从那行代码继续。

问题是,如果我在后台线程 (AsyncTask) 中检查连接,主线程将创建新线程并继续编译其余代码。

这是我的代码:

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 继续。

有人可以给我一些建议吗?

【问题讨论】:

    标签: android networking android-asynctask


    【解决方案1】:

    您只需要重新安排事物的顺序,就可以让它与 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();
    

    在您的外部 else 中,只需启动此任务即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多