gpt4 book ai didi

java - Webview 在被用户杀死后没有恢复状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:36:30 25 4
gpt4 key购买 nike

为了理解这个问题,我困扰了好几天。基本上我有一个加载网站的 Webview,第一页是登录,内容在登录后跟随。

每个用户验证都是通过它自己的网站进行的。因此,例如 SharedPreference 中没有要保存的内容。我只在这种情况下使用 url。

所以在杀死我的应用程序之后创建,webview 没有恢复它被杀死之前的状态。

我想这是因为 savedinstancestate 变为空,并且在应用程序被杀死后再次加载 url。

我有 session cookie 和其他东西。

我想知道是否有人有一些建议。

p.s.我是 Android 新手。

最佳答案

正如您自己指出的那样,由于保存的状态为空,您不可能期望 onCreate 将您的 webview 返回到打开的最后一个页面。您需要做两件事:

确保您的登录页面(即您的第一个页面)在检测到用户已登录时重定向到相关内容页面。由于您已经在使用 cookie,因此这很简单。

然后覆盖 onPause 方法以保存 webView 的当前 url。

@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = context.getApplicationContext().
getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
Editor edit = prefs.edit();
edit.put("lastUrl",webView.getUrl());
edit.commit(); // can use edit.apply() but in this case commit is better
}

然后您可以在 onCreate 方法上读取此属性并根据需要加载 url。如果定义了首选项加载它,如果没有加载登录页面(如果已经登录,应该重定向到第一个内容页面)

更新这是您的 onResume 的样子。还在上面的 onPause() 方法中添加了一行。

@Override
protected void onResume() {
super.onResume();
if(webView != null) {
SharedPreferences prefs = context.getApplicationContext().
getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE);
String s = prefs.getString("lastUrl","");
if(!s.equals("")) {
webView.loadUrl(s);
}
}
}

关于java - Webview 在被用户杀死后没有恢复状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32832845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com