Android ViewPager 页面生成缓冲保留

来源:互联网 发布:张馨予的淘宝店铺名字 编辑:程序博客网 时间:2024/06/06 16:30

Android ViewPager会有很多Pages,在生成ViewPager的时候并不会一次性把所有Pages OnCreate。默认的机制是把当前页和当前页旁边的Page OnCreate。

这种机制是为了节省空间和开销的,但是也会造成我们程序一些不预期发生的事情,譬如页面滑动不流畅,卡顿乃至APP宕机。

为了解决这个问题,我们可以使用如下两个函数来适配我们的程序。

    /**     * Returns the number of pages that will be retained to either side of the     * current page in the view hierarchy in an idle state. Defaults to 1.     *     * @return How many pages will be kept offscreen on either side     * @see #setOffscreenPageLimit(int)     */    public int getOffscreenPageLimit() {        return mOffscreenPageLimit;    }
/**     * Set the number of pages that should be retained to either side of the     * current page in the view hierarchy in an idle state. Pages beyond this     * limit will be recreated from the adapter when needed.     *     * <p>This is offered as an optimization. If you know in advance the number     * of pages you will need to support or have lazy-loading mechanisms in place     * on your pages, tweaking this setting can have benefits in perceived smoothness     * of paging animations and interaction. If you have a small number of pages (3-4)     * that you can keep active all at once, less time will be spent in layout for     * newly created view subtrees as the user pages back and forth.</p>     *     * <p>You should keep this limit low, especially if your pages have complex layouts.     * This setting defaults to 1.</p>     *     * @param limit How many pages will be kept offscreen in an idle state.     */    public void setOffscreenPageLimit(int limit) {        if (limit < DEFAULT_OFFSCREEN_PAGES) {            Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to "                    + DEFAULT_OFFSCREEN_PAGES);            limit = DEFAULT_OFFSCREEN_PAGES;        }        if (limit != mOffscreenPageLimit) {            mOffscreenPageLimit = limit;            populate();        }    }
0 0
原创粉丝点击