2

次のようなループでasynctaskを使用して、データベースにデータを保存しています。

for(int i=0;i<5;i++){
new Loader().execute(i);
}

私のasynctaskクラスでは、doinbackgroundメソッドは次のようになります。

@Override
        protected Void doInBackground(Integer... params) {
            db.insert(params[0]);
            return null;
        }

i実行されていますが、データベースにの最初の値を挿入するたびに?対応するこのループでそれを操作する方法は?

4

2 に答える 2

2

あなたは次のようなことをすることができます:

    @Override
    protected Void doInBackground(Integer... params) {
        int count = params.length;
        db.beginTransaction();
        try {
            for (int i = 0; i < count; i++) {
                db.insert(params[i]);
            }
            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }
        return null;
    }

そしてあなたは電話しますnew Loader().execute(1, 2, 3, 4, 5);

AsyncTaskオブジェクトインスタンスを1つだけ作成することで、メモリを節約できます

于 2012-07-22T06:54:35.723 に答える
1

タスク内でループを取得してみてください。

    Integer arr[] = new Integer[2];
    arr[0]=0;
    arr[1]=1;

    new Loader.execute(arr);

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

                foreach (Integer i : params)
                 db.insert(params[i]);
                return null;
            }
于 2012-07-22T06:54:50.590 に答える