我目前正在开发使用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会占用大量内存) 还有更多的记忆力。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top