Android - 防止 WebView 在来回时重新加载

Android - prevent WebView from reloading when going back and forth

我的 Android 应用程序中有 Activity A 和 Activity B。在 Activity A 中有一个指向 Activity B 的按钮。在 Activity B 中,我有一个带有 Internet 表单的 WebView。用户可以在该表单中输入一些数据。如果他返回 Activity A 然后再次返回 Activity B,他将丢失输入的数据。我怎样才能防止这种情况发生?

首先,您需要将 android:launchMode="singleInstance" 添加到清单中的两个活动。这将确保如果 activity 的实例存在,那么它将把它带到前面并调用它的 onNewIntent() 函数,而不是创建一个新的 activity 并调用它的 onCreate().

您可以从 Activity A 开始 Activity B,并确保不要使用 finish()

例如在 Activity A 中: startActivity(Intent(this, ActivityB::class.java))

当用户想要从 Activity B 返回到 Activity A 时,请确保调用 startActivity(Intent(this, ActivityA::class.java)) 这将要求您覆盖硬件后退按钮行为,如果您也显示它,可能还需要覆盖导航后退按钮。 Kotlin 示例:

    /* Top navigation button */
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        if (item.itemId == android.R.id.home) {
            finish()
            return true
        }
        return super.onOptionsItemSelected(item)
    }

    /* Hardware back button */
    override fun onBackPressed() {
        startActivity(Intent(this, MainActivity::class.java))
    }