我试图回答这个(接受的答案)。我可以使用“ PING”方法,但是UI变黑了,因为它说它将阻塞UI线程。它看起来并不好并且令人不安,所以我尝试使用第二种方法“连接到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)
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何使用它。我这样尝试:
InternetCheck{ …Run Code Online (Sandbox Code Playgroud) 我想问一下这本书上的鸭子例子让我感到困惑,我感到矛盾.
问题

结论

他说" 当乔给鸭子超类增加了新的行为时,他还添加了对于sume Duck子类不合适的行为 "
但在结论中他补充说performFly(),有performQuack();什么不同,因为我觉得它一样he was also adding behavior that was not appropiate for sume Duck subclasses?
**图片摘自头首设计图案**这个问题没有说明这本书不好,这本书在我看来真的很好.这只是我在问一些我从书中得不到的东西.
我有两个关于这个问题的问题。
如果在 laravel/web 中我们有.env文件将环境设置为“开发”或生产并自动连接到不同的数据库。在 android/kotlin/android studio 怎么样?
以及如何在 PC 上向我的本地主机(127.0.2.1)发出我的应用程序请求(如果它在“开发”环境中)以及如何向真实的 url API 发出请求(如果它在“生产”环境中)。仅供参考,我不使用模拟器。我用我的手机来测试我的应用程序。
我试图观察我的workers但他们总是处于queued状态或有时它'sRUNNING但从来没有SUCCEED或FAILED。
是workStatus.state来自 returndoWork()还是不同?
这是我的工作脚本:
\n\npackage com.mockie.daikokuten.sync.workers\n\nimport androidx.work.Worker\n\n\nclass TestWorker:Worker()\n{\n\noverride fun doWork():Worker.Result\n{\n return Worker.Result.SUCCESS\n}\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这是观察工人的脚本:
\n\n val test = PeriodicWorkRequest.Builder(\n TestWorker::class.java,\n PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS,\n TimeUnit.MILLISECONDS)\n .addTag("test_worker")\n .build()\n\n WorkManager.getInstance()?.enqueueUniquePeriodicWork("test_worker", ExistingPeriodicWorkPolicy.KEEP, test)\n\n WorkManager.getInstance()!!.getStatusesByTag("test_worker")\n .observe(this, Observer { workStatus ->\n if (workStatus != null)\n {\n for(ws in workStatus)\n {\n Log.d(":dump2 id ", ws.id.toString())\n Log.d(":dump2 tag", ws.tags.toString())\n Log.d(":dump2 state", ws.state.toString())\n }\n }\n })\nRun Code Online (Sandbox Code Playgroud)\n\n这是 Logcat 中的结果:
\n\n 07-23 17:12:30.901 29740-29740/com.mockie.daikokuten …Run Code Online (Sandbox Code Playgroud) 例:
data-value="[0]"
Run Code Online (Sandbox Code Playgroud)
当我尝试获取值时jQuery(element).data('value'),它总是返回"0".我也试过toString()函数或String对象但是失败了,它一直返回"0".
那我怎么能得到真正的价值"[0]"?