如何在Thread中获取值



上下文:

我有一个线程,在线程内我要做的是检查URL是否存在。并且我需要检索"0"的值;urlExist";要在方法外部使用的变量。

代码

fun checkIfUrlExist(url: URL):Boolean{
object : Thread() {
override fun run(): Boolean {
super.run()
try {
val con = url.openConnection() as HttpURLConnection
con.requestMethod = "HEAD"
con.connect()
Log.i("myEndpoint", "con.getResponseCode() IS : " + con.responseCode)
if (con.responseCode == HttpURLConnection.HTTP_OK) {
urlExist = true //I need to get this
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}.start()

if(urlExist){  //if the variable "urlExist" is true, I need to return true.
return true
}
}

问题:

如何获取urlExsit变量的值?

您已经在Thread外部有urlExist变量,您可以直接使用它。您只需要注意这是一个异步问题。

如果你需要在之后运行一些逻辑

con.responseCode == HttpURLConnection.HTTP_OK

检查,我建议:

  1. 将所有逻辑移动到一个方法。如果您想在检查后访问URL,请将实际访问URL的所有逻辑移动到";acessURL";方法
  2. 根据需要,在urlExist = true之后或If语句之后立即调用方法

如果你有空,重新检查你的代码是值得的。在这种情况下,您可能需要使用RxJava或LiveData

相关内容

  • 没有找到相关文章

最新更新