如何将下面的android方法转换为递归方法?

时间:2015-06-23 18:46:35

标签: java android performance android-layout android-fragments

我为教育软件创建了800片段,因此我无法使用vpPager.setOffscreenPageLimit(800)。我想我必须使用循环来打开带有buttonclicks的FragmentX(LessonX)。 我的方法在下面我尝试了所有这些并且它们运行缓慢,打开fragmentXYZ需要3分钟或4分钟。我想要帮助或想尝试递归方法,但我没有管理转换为递归方法。有什么帮助吗?抱歉我的英语不好。

public void  Mypagermethod_1(int x) {
    final ViewPager vpPager = (ViewPager) findViewById(R.id.pager);
    vpPager.setCurrentItem(0);
    int i;
    for (i = 1; i <= x; i++) {
        vpPager.setCurrentItem(vpPager.getCurrentItem() + 1);
    }
}

OR

public void  Mypagermethod2(int x) {
    final ViewPager vpPager = (ViewPager) findViewById(R.id.pager);
    vpPager.setCurrentItem(0);
    int i=1;
    while(i <= x){
        vpPager.setCurrentItem(vpPager.getCurrentItem() + 1);
        i++;
    }
}

OR

public void  Mypagermethod3(int x) {
    final ViewPager vpPager = (ViewPager) findViewById(R.id.pager);
    vpPager.setCurrentItem(0);
    int i=1;
    do {
        vpPager.setCurrentItem(vpPager.getCurrentItem() + 1);
        i++;
    } while(i <= x);
}

2 个答案:

答案 0 :(得分:1)

哦,我明白你在做什么。您不必在方法中模拟一次刷一页,只需调用vpPager.setCurrentItem(800)。

答案 1 :(得分:0)

上面的所有代码示例都具有相同的性能,并且更改为递归方法将没有任何区别。问题显然在vpPager.setCurrentItem(vpPager.getCurrentItem() + 1);左右,如果这个方法很慢,那么无论你怎么称呼它都会很慢。

您还没有给出足够的信息来提供更具体的答案,您需要调试并查看时间。您是否正在渲染图像或其他任何可以关闭到单独线程的内容?