WebView导致程序崩溃!!!
2012-12-20 18:05
148 查看
1. 项目中遇到一个问题,在一个webview的页面上长按,弹出系统的“复制”和“搜索”,点击“搜索”,程序死机,报错启动外部Activity时要设置一个 FLAG_ACTIVITY_NEW_TASK
,但是搜索启动的是系统的浏览器,我根本就没有startActivity ,找了半天,找到有个哥们跟我遇到了同一个问题 ,见链接:http://hi.baidu.com/cenxcen/item/8ba7a0f3715e3310ce9f32c1
我写的就是下面这段代码,R.layout.sub_xeb_webview中含有一个webview
for (int i = 0; i < items.size(); i++) {
View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.sub_xeb_webview, null);
mListPagerViews.add(view);
}
getApplicationContext() 导致的,网络上那么多神人说,用getApplicationContext()代替this ,可以优化内存,我上次就是出于这个想法就使用了它,结果内存真的不增加了,很有效果,所以我这里也用了万能的getApplicationContext() ,但这个东西是悲剧的开始,确实很坑爹,不要随便乱用哦,要在理解的基础上使用。
getApplicationContext()改成this后,点击“搜索”,不在挂机了。但是这样会产生另外一个问题,也就是我以前为什么讲this改成getApplicationContext()!!!
2. 话说很久以前,代码是这样的
for (int i = 0; i < items.size(); i++) {
View view = LayoutInflater.from(this).inflate(R.layout.sub_xeb_webview, null);
mListPagerViews.add(view);
}
这样写会有一个什么问题呢?在这个Activity以及前一个Activity之间不停切换,最后程序自动退出到主页面,没有ANR ,没有错误提示,基本上可以理解成页面崩溃。我就新建了一个工程,专门用来测试这段代码,开始怀疑是不停的LayoutInflater.from(this).inflate(R.layout.sub_xeb_webview,
null); 导致的,换成下面的样子
for (int i = 0; i < items.size(); i++) {
View view = new View(this);
mListPagerViews.add(view);
}
居然不崩溃了,继续定位,直到换成下面的代码
for (int i = 0; i < items.size(); i++) {
WebView view = new WebView (this);
mListPagerViews.add(view);
}
至此,可以明显的看到是Webview在捣鬼啊,百度一下,发现某些ANDROID版本的手机,要将webview destroy掉,在4.0以上的好像就不用了,最后,在layout中提取到webview 销毁,程序不在崩溃了。
3. android 自诩不用管理内存,我干她奶奶的,这套不管理内存的机制还真是坑爹,多少个坑啊,等着我们去踩,bitmap就是最大的一个坑,申请释放,还不立马释放,导致 use a recycle bitmap.
,但是搜索启动的是系统的浏览器,我根本就没有startActivity ,找了半天,找到有个哥们跟我遇到了同一个问题 ,见链接:http://hi.baidu.com/cenxcen/item/8ba7a0f3715e3310ce9f32c1
我写的就是下面这段代码,R.layout.sub_xeb_webview中含有一个webview
for (int i = 0; i < items.size(); i++) {
View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.sub_xeb_webview, null);
mListPagerViews.add(view);
}
getApplicationContext() 导致的,网络上那么多神人说,用getApplicationContext()代替this ,可以优化内存,我上次就是出于这个想法就使用了它,结果内存真的不增加了,很有效果,所以我这里也用了万能的getApplicationContext() ,但这个东西是悲剧的开始,确实很坑爹,不要随便乱用哦,要在理解的基础上使用。
getApplicationContext()改成this后,点击“搜索”,不在挂机了。但是这样会产生另外一个问题,也就是我以前为什么讲this改成getApplicationContext()!!!
2. 话说很久以前,代码是这样的
for (int i = 0; i < items.size(); i++) {
View view = LayoutInflater.from(this).inflate(R.layout.sub_xeb_webview, null);
mListPagerViews.add(view);
}
这样写会有一个什么问题呢?在这个Activity以及前一个Activity之间不停切换,最后程序自动退出到主页面,没有ANR ,没有错误提示,基本上可以理解成页面崩溃。我就新建了一个工程,专门用来测试这段代码,开始怀疑是不停的LayoutInflater.from(this).inflate(R.layout.sub_xeb_webview,
null); 导致的,换成下面的样子
for (int i = 0; i < items.size(); i++) {
View view = new View(this);
mListPagerViews.add(view);
}
居然不崩溃了,继续定位,直到换成下面的代码
for (int i = 0; i < items.size(); i++) {
WebView view = new WebView (this);
mListPagerViews.add(view);
}
至此,可以明显的看到是Webview在捣鬼啊,百度一下,发现某些ANDROID版本的手机,要将webview destroy掉,在4.0以上的好像就不用了,最后,在layout中提取到webview 销毁,程序不在崩溃了。
3. android 自诩不用管理内存,我干她奶奶的,这套不管理内存的机制还真是坑爹,多少个坑啊,等着我们去踩,bitmap就是最大的一个坑,申请释放,还不立马释放,导致 use a recycle bitmap.
相关文章推荐
- RecyclerView的快速滑动,导致程序崩溃
- android.webkit.WebView 使用 SINGLE_COLUMN layout algorithm 导致程序意外退出的解决办法
- android.webkit.WebView 使用 SINGLE_COLUMN layout algorithm 导致程序意外退出的解决办法
- 因WKWebview导致视图控制器释放不掉而内存崩溃的问题
- webview setting movie path:程序崩溃
- win8应用商店程序开发-WebView控件
- 20_Android中apk安装器,通过WebView来load进一个页面,Android通知,程序退出自动杀死进程,通过输入包名的方式杀死进程
- 微信小程序内嵌套网页(webview)
- 如何在JavaFX的WebView中通过JavaScript回调Java的程序
- iOS JSON返回的数据有NSNull导致程序崩溃及ios nil、NULL和NSNull的区别
- Android在选择系统相册图片时,返回的图片地址不同导致程序崩溃!!!
- VC6 DEBUG版下内存控制的一个BUG,导致debug版程序必将崩溃
- 设置添加小程序web-view业务域名——小程序web-view高级用法1
- Win10正式版开始菜单严重Bug曝光:快捷程序过多或导致崩溃
- 关于微信小程序webview的使用
- android开发中WebView的使用(附完整程序)
- 微信小程序 - webview组件打开H5页面
- 关于android webview 图片使用同一个src导致只加载第一张的问题
- 微信小程序中web-view的那些坑
- Android中scrollview嵌套webview后导致网页加载成功但无法显示