0

アプリが起動すると、sdcard を再帰的に反復するファイルスクレーパーが起動されます。ご想像のとおり、これにはかなりの時間がかかります。私の epad 変圧器では、32 GB のストレージを通過するのに 30 ~ 40 秒かかることがあります。

このアクティビティは、メイン アクティビティから起動された、メイン レイアウトに存在する 2 つのフラグメントで実行されます。

明らかに、そのような読み込み時間では、ユーザーに警告するために何かをする必要があります。ただし、私が読んだことから、ロード画面の背後でバックグラウンドでメイン アクティビティを起動できません。プログレスバーをドロップしようとしましたが、失敗しました。

それで、何か提案はありますか?

編集

フラグメント内で aSyncTask を使用することについて読んでいます。スローリストフラグメント内、スプラッシュスクリーン、またはメインビューのすぐ上にプログレスバーを使用したいと思います

4

1 に答える 1

0

このようなことをする

LoadTask load;

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

        int prog = 0;

        @Override
        protected Boolean doInBackground(Void... params) {

            //All your loading code goes in here 

            publishProgress(prog++); //Use this to update the progress bar

            publishProgress(-1) //Use this to open other app
            return false;
        }

        protected void onProgressUpdate(Integer... progress) {
             if(progress[i] == -1)
                 //open other app here

             for(int i = 0; i < progress; i++){
                  //set progress here with progress[i];
             }
        }


}

次に、非同期タスクを開始するには、

load = new LoadTask();
load.execute();
于 2012-06-13T22:29:55.787 に答える