单例片段或保存网页视图状态

Posted

技术标签:

【中文标题】单例片段或保存网页视图状态【英文标题】:Singleton Fragment or save web view state 【发布时间】:2019-04-10 20:20:45 【问题描述】:

我想要的是我在 Activity 中有一个片段,它有一个 web 视图,基本上是与客户服务聊天。此活动将从另一个活动中的按钮开始,

现在棘手的部分是我想保存 Web 视图的当前会话,以便无论何时用户来到此活动或每当我使用此片段时,我都可以显示最后一次对话。

所以我尝试的是

private class MyWebViewClient extends WebViewClient 
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
        // Saving the last loaded url in shared pref and then loading the same url in oncreateview
        return true;
    

但是当用户进行对话时,它不会加载不同的 url,因此从不调用 shouldOverrideUrlLoading。

我们将非常感谢您的帮助

【问题讨论】:

【参考方案1】:

试试这个代码的 sn-p -

public class Tab2Fragment extends Fragment 

    private WebView webView;
    private Bundle webViewBundle;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) 

    LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.tab2,
        container, false);

    webView = (WebView) ll.findViewById(R.id.webView1);
    webView.setWebViewClient(new WebViewClient());

    if (webViewBundle == null) 
        webView.loadUrl("http://www.lucazanini.eu");
     else 
        webView.restoreState(webViewBundle);
    

    return ll;

    

    @Override
    public void onPause() 
    super.onPause();

    webViewBundle = new Bundle();
    webView.saveState(webViewBundle);
    

或者尝试使用这种方式-

如果网站正在启动会话,那么您可以使用this 获取会话和save it to Shared Preferences。否则,您可以keep track of page changes,并使用 SharedPreferences 保存/检索最新页面。

【讨论】:

我已经尝试了上面的示例,但它不起作用:(对于您提到的保存 cookie 和跟踪页面更改的其他选项,我没有收到页面更改的任何回调,因为没有更改在 url 中或者它没有打开一个新的 url 它只是一个聊天屏幕,用户正在与客户服务聊天。 codexpedia.com/android/…查看此网址希望对您有所帮助。 它正在使用 java 脚本调用一些函数,我需要的是一种方法来保存这个片段/Web 视图状态,并且每当这个片段从保存状态而不是从一开始就显示这个片段/Web 视图时就像一个单例类 你可以在你的 url 中保留一些参数来保存状态。【参考方案2】:

正如 Al-Amin 所说,我可以在我的 URL 中保存一些密钥,但我没有后端团队对这个项目的支持,因为这个模块在许多其他地方使用,所以他们无法改变任何东西,所以我解决了这个问题将我的活动的启动模式用作单个实例

android:launchMode="singleInstance"

对于后按

moveTaskToBack(true);

因此,在我调用完成活动之前,我的 webview 活动不会被破坏。

【讨论】:

以上是关于单例片段或保存网页视图状态的主要内容,如果未能解决你的问题,请参考以下文章

android片段-当另一个片段被推到它上面时如何保存片段中的视图状态

保存网页设置配置

从bottomNavigationView导航到片段B时保存片段A的状态

如何将网页另存为PDF?

如何保存或下载网页中的pdf文档?

如何使用 C++ 保存网页? Windows 或 Linux 系统