Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
Android 提高活动开始时间(异步任务?)_Android_Multithreading_Android Asynctask_Android Viewpager - Fatal编程技术网

Android 提高活动开始时间(异步任务?)

Android 提高活动开始时间(异步任务?),android,multithreading,android-asynctask,android-viewpager,Android,Multithreading,Android Asynctask,Android Viewpager,我有一个带有ViewPager和一些片段的活动 问题:启动活动需要很长时间,因为ViewPager是在onResume方法中创建的。2-3秒,因为数据库请求 我想我可以在onResume中开始一项异步任务,并在那里完成繁重的工作。但是开始活动的时间并没有减少 如果我在视图中放置一个按钮,并在onClick中完成工作,那么一切都可以正常工作。活动开始得非常快,点击后,繁重的工作开始了 需要考虑的一些代码: 异步任务实现 private class LoadTask extends AsyncTas

我有一个带有ViewPager和一些片段的活动

问题:启动活动需要很长时间,因为ViewPager是在onResume方法中创建的。2-3秒,因为数据库请求

我想我可以在onResume中开始一项异步任务,并在那里完成繁重的工作。但是开始活动的时间并没有减少

如果我在视图中放置一个按钮,并在onClick中完成工作,那么一切都可以正常工作。活动开始得非常快,点击后,繁重的工作开始了

需要考虑的一些代码:

异步任务实现

private class LoadTask extends AsyncTask<Void, Integer, Boolean>{

        @Override
        protected Boolean doInBackground(Void... params) {
            PageAdapter mPageAdapter = new PageAdapter(
                    getSupportFragmentManager(), mFragments);
            mViewPager.setAdapter(mPageAdapter);

            return true;
        }

    }
此解决方案不会缩短活动的开始时间


在完成繁重的任务后,是否有一种方法可以启动“活动”并在膨胀和显示所有内容(progressbar…)之后?

您需要做的是设置空的查看页面,并在创建“活动”时将其链接到适配器。然后,将内容填充到异步任务中支持适配器的任何集合中,并通知视图数据集已更改。在创建视图并将适配器的注册移动到异步任务之前,无法显示该视图,因此不会注意到差异。我们的目标是让应用程序在启动时显示一些视图,并在数据可用时简单地填写数据(您可能知道)。

ViewPager在开始时是空的。它是在XML中创建的。但我看不见。通过将PageAdapter设置到ViewPager中,ViewPager将充满内容。这在asynctask中异步发生。但整个acitvity将在异步任务结束后显示。我不清楚为什么在asyncTask执行操作时不绘制活动。因此,您的意思是,如果您注释掉异步任务,它会按预期工作(加载速度很快),减去填充了合法数据的寻呼机?我们可能需要更多的代码。另外,您尝试加载多少数据,以及您正在测试的系统的规格是什么?
@Override
    protected void onResume() {
        super.onResume();

        LoadTask task = new LoadTask();
        task.execute();
    }