Android WebView 如何防止页面重新加载

5
我有一个打包了 Phonegap 的应用程序,当按下按钮时会打开 PDF 查看器。我使用了 FileOpener2 插件来实现它。
当我从 PDF 查看器返回到应用程序时,结果取决于 Android 版本。
在 Android 4.* 中,应用程序停留在离开应用程序之前的位置。然而,在 Android 2.3.7 中,WebView 重新加载应用程序,这不是我所期望的行为。
我已经尝试将 android:launchmode 更改为 singleTask 或 singleInstance,但没有成功。
如何在返回到 Phonegap 应用程序时避免页面重新加载?
谢谢!
更新1:
我已经修改了 Cordova 或 Phonegap 类 CordovaWebViewClient,它继承了 WebViewClient。
@Override
public void onLoadResource(WebView view, String url) {
    if (url.equals("file:///android_asset/www/index.html")) {
        if (this.firstLoad) {
            this.firstLoad = false;
        } else {
            view.stopLoading();
        }
    }

然而,onLoadResource只在应用程序启动时触发,而不是从另一个应用程序恢复时触发。
2个回答

9
回答自己的问题,将以下属性设置为AndroidManifest中唯一的Activity即可解决问题。但我还需要测试它,因为可能存在我不知道的问题:
android:launchMode="singleInstance"
android:alwaysRetainTaskState="true"

干杯!

更新

在使用 Phonegap 相机插件从相册选择照片时,出现了一个错误,显示“选择已取消”。

因此,在阅读https://groups.google.com/forum/#!topic/phonegap/R08vOZNm580后,我进行了以下设置:

 android:launchMode="singleTask"
 android:taskAffinity=""
 android:excludeFromRecents="true"

哦,我的天啊,你救了我的一命。感谢你提供的解决方案。 - Hamid
如果您设置了LaunchMode,那么在活动中是否需要上述代码'onLoadResource'? - rashidnk

1
在 android.webkit.WebViewClient 的 onLoadResource 回调中调用 WebView 的 stopLoading 方法。
MyWebViewClient extend WebViewClient {

public void onLoadResource (WebView view, String url) {
    if(your condition ){
         view.stopLoading();
    }
}
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接