改善活动开始时间(AsyncTask?)

时间:2012-07-24 00:44:46

标签: android multithreading android-asynctask android-viewpager

我有一个带有ViewPager的Activity和一些片段。

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

我以为我可以在onResume中启动一个AsyncTask并做那些繁重的工作。但是开始活动的时间并没有减少。

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

要考虑的一些代码:

AsyncTask实现

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;
        }

    }

在onResume

中调用该任务
@Override
    protected void onResume() {
        super.onResume();

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

此解决方案不会改善活动的开始时间。

有没有办法启动Activity并在充气并显示所有内容(进度条......)后执行繁重的任务?

1 个答案:

答案 0 :(得分:0)

您需要做的是设置视图寻呼机,并在创建活动时将其链接到适配器。然后,将内容填充到异步任务中的适配器的任何集合中,并通知视图数据集已更改。在创建视图之前无法显示该视图,并且您已将适配器的注册移动到异步任务,因此您不会注意到差异。我们的目标是让您的应用在启动时显示一些视图,并在数据可用时填写(如您所知)。