Android WebView 防止页面重新加载

Posted

技术标签:

【中文标题】Android WebView 防止页面重新加载【英文标题】:Android WebView prevent page reload 【发布时间】:2014-04-16 14:50:17 【问题描述】:

我有一个 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 仅在应用程序启动时被触发,而不是在从另一个应用程序恢复时被触发。

【问题讨论】:

【参考方案1】:

回答我自己的问题,将以下属性设置为 AndroidManifest 中的唯一活动即可解决问题。但是我必须对其进行测试,因为它可能存在我不知道的问题:

android:launchMode="singleInstance"
android:alwaysRetainTaskState="true"

干杯!

更新

在测试出现错误后,使用 Phonegap 相机插件在图库中选择一张照片,显示“已取消选择”。

所以看完https://groups.google.com/forum/#!topic/phonegap/R08vOZNm580我设置:

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

【讨论】:

天哪,你救了我一命。感谢您的解决方案。 那么,如果你设置了LaunchMode,我们是否需要在activity中使用上面的代码'onLoadResource'?【参考方案2】:

在android.webkit.WebViewClient onLoadResource回调中调用WebView的stopLoading

MyWebViewClient extend WebViewClient 

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


【讨论】:

以上是关于Android WebView 防止页面重新加载的主要内容,如果未能解决你的问题,请参考以下文章

在android webview应用程序的页面上单击链接时如何防止显示加载微调器?

从原生android发送数据到webview javascript页面重新加载网页

在不重新加载页面的情况下切换 webview 活动

是否可以防止在 Cordova 中重新初始化应用程序?

Android WebView:处理方向变化

加载新的WebView时,防止当前的WebView消失