ViewPager setCurrentItem冻结UI线程

psh*_*ger 7 android android-support-library

我正在使用Android支持v13中的ViewPager,我想使用滚动到特定项目setCurrentItem(int),但是当我尝试滚动超过2页时应用程序冻结,几秒钟后系统显示ANR窗口.

我试图增加屏幕外屏幕限制setOffscreenPageLimit(2),这样当我试图滚动2页时它没有冻结,但3页也是如此.

我的问题是我的片段非常耗费内存,所以我不想在内存中占用太多.我在支持库v4中使用了相同的代码,但我必须将其更新为v13才能使用NotificationCompat.Builder.addAction(int, CharSequence, PendingIntent).

你们中的任何人都知道可能是什么问题,可能是什么解决方案?

duv*_*duv 20

您的适配器是否处理了大量的物品?(非常大> ~2 20项)

ViewPager.populate(int)将从当前项目位置循环到N,这是适配器中的项目数量 - 因此,如果您将其设置为大型(例如Integer.MAX_VALUE),这将花费一些时间,但最终将完成.

如果是这种情况,请搜索"无限寻呼机"相关问题,例如Endless ViewPager android,或者将项目数限制为对主线程合理的内容.