上下文:
我有一个线程,在线程内我要做的是检查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
检查,我建议:
- 将所有逻辑移动到一个方法。如果您想在检查后访问URL,请将实际访问URL的所有逻辑移动到";acessURL";方法
- 根据需要,在
urlExist = true
之后或If语句之后立即调用方法
如果你有空,重新检查你的代码是值得的。在这种情况下,您可能需要使用RxJava或LiveData