ViewPager的内存问题
-
27-10-2019 - |
题
我目前正在开发使用ViewPager的应用程序,问题是我的操作方式使其启动非常缓慢,并占用大量内存。
我正在像这样实现pageradapter: 通用标签
所有布局对象都包含带有TextView和面板,其中包含带有本地html的webview。所有布局都具有唯一的内容,在实例化SliderLayout类时会对其进行加载和填充。
我还试图在InstantiateItem方法中动态添加视图,但这只会使滚动更加模糊,如果我滚动得太快,则会给出OutOfMemory致命异常。
所以我的问题是,实现包含多个唯一视图(但基于相同布局)的ViewPager的最佳方法是什么,这样它就不会占用太多内存并能更快地启动?
解决方案
您必须在InstantiateItem()中将视图附加到寻呼机(就像在常规适配器的getView()方法中那样)。在这种情况下,ViewPager负责内存管理。查看CompatibilityPackage中的演示项目。实际上,您可以拥有数千页而没有任何滞后。 通用标签
其他提示
hm,我的想法是在ViewPager中捕获事件“ onPageChanged()”并设置 页面更改后的webview-或者,以页面为例进行预加载,这样您就可以 “滚动效果”:您可以执行以下操作:
例如,您的页面总数为10。如果您的viewpager位于页面0,那么您实例化并加载页面0,1,2。如果您的viewpager位于屏幕4上,则您删除了webviews 在位置0,1和7,8,9 ...
通过这种方式,您不需要Web视图的所有实例(Webkit会占用大量内存) 还有更多的记忆力。
不隶属于 StackOverflow