0

ViewPager といくつかのフラグメントを含むアクティビティがあります。

問題: ViewPager が onResume メソッドで作成されるため、アクティビティの開始に時間がかかります。データベース要求のため 2 ~ 3 秒。

onResume で AsyncTask を開始し、そこで重い作業を行うことができると思いました。しかし、アクティビティを開始する時間は減少しません。

View に Button を配置し、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();
    }

この解決策は、活動の開始時間を改善しません。

アクティビティを開始し、すべてを膨らませて表示した後 (プログレスバー...)、重いタスクを実行する方法はありますか?

4

1 に答える 1

0

アクティビティを作成するときに、のビュー ページャーをセットアップし、それをアダプターにリンクする必要があります。次に、非同期タスクでアダプターをサポートするコレクションにコンテンツを入力し、データセットが変更されたことをビューに通知します。ビューは作成されるまで表示できず、アダプターの登録を非同期タスクに移動したため、違いに気付くことはありません。目標は、アプリを起動したときに何らかのビューを表示し、利用可能になったときにデータを入力するだけにすることです (おそらくご存じのとおり)。

于 2012-07-24T00:58:42.093 に答える