使用viewpager切换fragment加载两个webview时卡顿

项目问题:

在首页嵌套有四个Fragment,切换方式使用ViewPager,中间两个页面为WebView,相互切换时存在卡顿,频繁切换程序崩溃。

网上博客分析:

博客分类: Android
关键词:Android WebView ViewPager Fragment
标题:Android中用ViewPager和Fragment内嵌WebView

WebView很好很强大,但是在Android中加载慢啊。 

在同一个Activity中,用ViewPager可以加载多个Fragment,切换视图比较流畅,但是如果超出了3个Fragment,而且刚好Fragment中有WebView,体验就非常糟糕,页面要好几秒才能显示出来。 

这是因为ViewPager缺省情况下,只把当前页的前一页和后一页放在缓冲区中。如果超出了3个Fragment,那么切换到第4个时,第一个会被销毁,第4个需要重建。内嵌的WebView就要重新被加载。 

如果Frragment不是很多的话,那可以设置ViewPager.setOffscreenPageLimit,增加缓冲页面,避免WebView被重建。例如有4页,可以设置setOffscreenPageLimit(3)。
其实这个值指的是,当前view的左右两边的预加载的页面的个数。也就是说,如果这个值为3,那么任何一个页面的左边可以预加载3个页面,右边也可以加载3页面。

巧的是,由于ViewPager可以预先加载和缓存fragment,避免了fragment中的WebView被无谓地刷新,体验反而更流畅了。如果WebView不在首页,那和原生开发的视图更没有太大区别。

解决方法:在 Activity_Main 初始化方法 init() 中加入代码:

// 增加缓冲页面,避免WebView被重建
    main_viewpager.setOffscreenPageLimit(3);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值