我试了this个答案(被接受的答案).我可以使用"PING"方法,但是UI变黑了,因为它说它会阻止UI线程.它看起来不太好,令人不安,所以我try 使用第二种方法"连接到Internet上的套接字",但我不知道如何使用Kotlin中的类.
这是Android studio将Java转换为Kotlin的结果
package com.mockie.daikokuten.helpers
import android.os.AsyncTask.execute
import android.os.AsyncTask
import java.io.IOException
import java.net.InetSocketAddress
import java.net.Socket
internal class InternetCheck(private val mConsumer: Consumer) : AsyncTask<Void, Void, Boolean>() {
interface Consumer {
fun accept(internet: Boolean?)
}
init {
execute()
}
override fun doInBackground(vararg voids: Void): Boolean? {
try {
val sock = Socket()
sock.connect(InetSocketAddress("8.8.8.8", 53), 1500)
sock.close()
return true
} catch (e: IOException) {
return false
}
}
override fun onPostExecute(internet: Boolean?) {
mConsumer.accept(internet)
}
}
but I DONT KNOW HOW TO USE IT. I tried this way:
InternetCheck{ internet-> Log.d("test", "asdasdas") }
It didnt work and results in an error. It says I have to pass "Consumer".
My question is How to use that class?