Как я могу вернуть логическое значение из AsyncTask?

У меня есть функция, которая проверяет сетевое подключение, а затем проверяет наличие сервера. Если есть сетевое подключение, он будет проверять наличие сервера. К сожалению, проверка доступности сервера осуществляется через AsyncTask .

Вот как я хочу использовать AsyncTask :

 if(NetworkConnectionInfo(context).execute()) { return true } else { return false } 

это класс NetworkConnectionInfo

  class NetworkConnectionInfo : AsyncTask<String, String, Boolean> { private var context: Context? = null constructor(context:Context):super(){ this.context = context } override fun onPreExecute() {} override fun doInBackground(vararg p0: String?): Boolean { try { val url = URL("http://www.example.com/") val urlc = url.openConnection() as HttpURLConnection urlc.setRequestProperty("User-Agent", "test") urlc.setRequestProperty("Connection", "close") urlc.setConnectTimeout(1000) // mTimeout is in seconds urlc.connect() return urlc.getResponseCode() === 200 } catch (ex:Exception) { ex.printStackTrace() } return false } override fun onProgressUpdate(vararg values: String?) {} override fun onPostExecute(success: Boolean) { if(!success) { Toast.makeText(this.context,"Error connecting server. Please try again later.", Toast.LENGTH_LONG).show() } else { Toast.makeText(this.context,"Server is available.", Toast.LENGTH_LONG).show() } } } 

Я хочу вернуть success в onPostExecute . Я не знаю, как подойти к этому.

AsyncTask не имеет возвращаемого значения, так как он асинхронен.

Вы должны использовать результат ( success ) непосредственно в функции обратного вызова onPostExecute . Вот как AsyncTask спроектирован и предполагается использовать.

 override fun onPostExecute(success: Boolean) { // call further functions depending on "success" // Note: can access views since it runs on the UI thread }