相关疑难解决方法(0)

Android基础知识:在UI线程中运行代码

从在UI线程中运行代码的角度来看,之间有什么区别:

MainActivity.this.runOnUiThread(new Runnable() {
    public void run() {
        Log.d("UI thread", "I am the UI thread");
    }
});
Run Code Online (Sandbox Code Playgroud)

要么

MainActivity.this.myView.post(new Runnable() {
    public void run() {
        Log.d("UI thread", "I am the UI thread");
    }
});
Run Code Online (Sandbox Code Playgroud)

private class BackgroundTask extends AsyncTask<String, Void, Bitmap> {
    protected void onPostExecute(Bitmap result) {
        Log.d("UI thread", "I am the UI thread");
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-ui android-asynctask android-view

434
推荐指数
7
解决办法
25万
查看次数

Kotlin:必须在同一线程上调用所有 WebView 方法

这是我的 kotlin 代码:

class WebAppInterface(private val mContext: Context, private val myWebView: WebView) {
    @JavascriptInterface
    fun goToHello() {
        val myWebView = myWebView
        myWebView.loadUrl("file:///android_asset/hello.html")
    }
}

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val myWebView: WebView = findViewById(R.id.webview)
        myWebView.settings.javaScriptEnabled = true
        myWebView.addJavascriptInterface(WebAppInterface(this, myWebView), "Android")
        myWebView.loadUrl("file:///android_asset/index.html")
    }
}
Run Code Online (Sandbox Code Playgroud)

但它是崩溃的。

引起:java.lang.Throwable:在线程“JavaBridge”上调用了 WebView 方法。所有 WebView 方法都必须在同一线程上调用。

我怎样才能解决这个问题?我通过搜索找到了一个解决方案,但这是 java 代码。Kotlin 和 Java 兼容,但由于语法错误而无法运行。(我想是因为我不懂 Kotlin 和 Java。反正)

我是一个基于 JavaScript 的全栈开发人员,我没有任何 Android 知识,所以我只想使用 webviews。但这对我来说也是非常困难的。(这就像我第一次学习 JavaScript 时的混乱时期。)

请告诉我解决方法。附:如果您有 Kotlin 的继承和范围概念的好列表,请链接。

android webview kotlin

1
推荐指数
1
解决办法
1067
查看次数