1

ぐるぐる回っているようです。Galaxy S3 でも実行に数秒かかるコードがあります。データベースからデータをドラッグします。この周りに進行状況バーのポップアップ (回転する円) を追加して、アプリが何かを実行していることをユーザーに知らせたいと考えています。アプリの他の場所で Asyntasks を試してみましたが、正常に動作しましたが、このタイプの場合、メイン UI は先に進む前に Asyntask が終了するのを待っていないため、呼び出された新しいアクティビティには必要なすべてのデータがなく、クラッシュします。

これを回避する最善の方法は AsyncTask ですか、それともメインのアクティビティを停止し、進行状況バーを表示して、長い遅延が完了したら次に進む簡単な方法がありますか。

時間をありがとう

アップデート

public class UpdateDetailsAsyncTask extends AsyncTask<Void, Void, Boolean> {   

    private Context context;
    private TaskCallback callback;

    private ArrayList<Object> object;

    private ProgressDialog progress; 

    public UpdateDetailsAsyncTask (
            Context pContext, 
            ArrayList<Object> pObject,
            TaskCallback pCallback) {

        context = pContext;
        callback = pCallback;
        object = pObject;

    }

    @Override
    protected void onPreExecute() {

        Log.i("AsyncTask", "onPreExecuted");

        progress = new ProgressDialog(context);
        progress.setMessage(context.getResources().getString(R.string.loading));
        progress.show();

    }

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

        Log.i("Archery", "AsyncTask Excuted");
        Log.i("Archery Scorepad", "Building Continue Round Details");

        // Save Data to Database

        return true;

    }


    protected void onPostExecute(Boolean result) {

        Log.i("AsyncTask", "onPostExuted");

        progress.dismiss();

        callback.startNewActivity();

    }

}

タスクはメイン アクティビティから呼び出されます

new UpdateDetailsAsyncTask(this, ArrayListOfObjects, this).exute();

更新 2

..

更新 3

いくつかの作業を行うコードは、データベース クラスを呼び出す Util クラス内のメソッドを呼び出します。データベースに保存しているすべてのデータ行のログ メッセージが表示されます。正しく開始され、実行されますが、データベース メソッドが完了する前に onPostExecute() が呼び出されたように見えます。

アクティビティ内にネストされたクラスがあり、その下のクラスが完了していないのにタスクが完了したように見えるという問題はありますか?

ありがとう

4

2 に答える 2