Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将下面的android方法转换为递归方法?_Java_Android_Performance_Android Layout_Android Fragments - Fatal编程技术网

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

Java 如何将下面的android方法转换为递归方法?,java,android,performance,android-layout,android-fragments,Java,Android,Performance,Android Layout,Android Fragments,我为教育软件创建了800片段,因此无法使用vpPager.setOffscreenPageLimit(800)。我想我必须使用一个循环来打开一个带有按钮的FragmentX(LessonX)。 我的方法如下:我尝试了所有方法,但运行速度很慢,打开一个fragmentXYZ需要3分钟或4分钟。我需要帮助或想尝试递归方法,但我并没有设法转换为递归方法。需要帮忙吗?对不起,我的英语很差 public void Mypagermethod_1(int x) { final ViewPager

我为教育软件创建了800片段,因此无法使用
vpPager.setOffscreenPageLimit(800)
。我想我必须使用一个循环来打开一个带有按钮的
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);
    }
}
public void Mypagermethod_1(int x){
final ViewPager vpPager=(ViewPager)findviewbyd(R.id.pager);
vpPager.setCurrentItem(0);
int i;

对于(i=1;i以上所有代码示例将具有相同的性能,并且更改为递归方法不会有任何区别。问题显然是围绕
vpPager.setCurrentItem(vpPager.getCurrentItem()+1);
,如果该方法很慢,那么无论您如何调用它,它都会很慢


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

哦,我知道您在做什么。您不必在方法中模拟每次刷一页,只需调用vpPage即可r、 setCurrentItem(800).

每当我问问题时,我的声誉就会下降。请不要给我负面消息。我只是一名教师和招聘程序员。我正在为我的学生准备一个教育软件。没有图像渲染,但每个片段都有gridview。gridview单元格在有人触摸时会说话,单元格中有非常小的图片或句子。而且许多字体都适合第一个片段是主课程菜单,有上百个按钮。(按钮1->Lesson1,,按钮800->Lesson800)如果我使用我的PagerMethod,打开一节课,只需点击一个按钮,需要花费很多时间。但左右水平或垂直向上、向下滑动都没有问题。但要用滑动打开第800课是很困难的。人们必须向左滑动800次,才能打开碎片800。非常感谢您的帮助和标记。拨打vpPager.setCurrentItem(800),vpPager.setOffscreenPageLimit(800)必须用合适的方法编写,而且手机和平板电脑的功能仍然很弱,所有设备都无法管理运行或缓存vpPager.setOffscreenPageLimit(800)命令。我建议您阅读ViewPager的文档。setOffscreenPageLimit用于设置ViewPager中预加载片段的数量,您不应该尝试将其设置得太高,只需直接调用setCurrentItem。如果片段布局彼此不同,请调用vpPager.setCurrentItem(0)和vpPager.setCurrentItem(1)运行,但不运行vpPager.setCurrentItem(x)如果x>=2。它会给出空点例外情况。您需要自己管理屏幕外的片段。请将您的“查看寻呼机”视为一个记录影片,其中的影片可以是无限的,但投影仪一次只显示一帧,并且旁边有2或3帧可供将来播放或倒带。如果您管理5个片段的窗口,则您的“查看寻呼机”将是无限的您可以容纳800个片段,同时保持性能与速度同步。
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++;
    }
}
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);
}