Andorid开发之进程后台被kill后恢复与webView.loadUrl拼接参数注意事项

来源:互联网 发布:java面试题中 编辑:程序博客网 时间:2024/05/16 15:27

最近在做项目开发的时候,遇到两个比较难解的bug,最终发现是因为在写代码的时候情况考虑不全,特此记录:

1,Android应用在后台,如果系统内存不走,则应用进程会被kill掉,在这种情况下重新打开应用,由于不是用户手动kill或者退出,系统会为用户恢复状态,但是这时候只会调用MainActivity的onCreate方法,如果有些操作是在Launch页中处理的话,这种情况就不能将所有的处理逻辑执行完毕,可能导致出现很难复现的bug。


2,在使用Android的webView组件过程中,为了实现在浏览器的内部跳转会重载shouldOverrideUrlLoading()方法,然后通过loadUrl加载具体页面,但是如果本地在目标的url上有拼接参数的操作,需要避免对参数的重复的拼接,否则可能会出现类似重定向导致webView返回失效的bug。

具体的情形是:

1加载 http://www.baidu.com,这时在本地拼接一个参数,例如token;

2偶现的会调用shouldOverrideUrlLoading()方法,这时候如果还会在后面追加一个token的参数,这时的地址已经和目标的地址不同,所以在webView的回退记录里面会有两条记录;

3调用webView的goBack()方法,则会重复2的步骤,这样就会出现类似于重定向的bug,导致webview返回不了。

该问题的解决方法1,在本地拼接参数时添加判断,如果参数已经存在则在执行追加参数的操作,这样可以避免webview中出现多余的回退记录;2一些参数可以通过js的与页面通信,避免将参数追加到参数的后面,这样可以改变访问的url,从而避免出现上述问题。

0 0
原创粉丝点击