0

I am currently trying to add a few records into my local room DB in a sequential manner.

But It seems every time I execute a runnable on a single thread using Executor. It still returns data in random order.

Method Call

   for (int i = 0; i < mImagePaths.size(); i++) {
                strDate = sdf.format(c.getTime());


                Sequential_Fix sequential_fix = new Sequential_Fix(lastInsertid, new MyImages(""+i, strDate, lastInsertid, mImagePaths.get(i), scantype, 0, 0, "N", "N", sync3, "Y", "Y", "Y"), i);
                new DatabaseHelper(getApplicationContext()).getImageCount(sequential_fix, lastInsertid, new Callback<Long>() {
                    @Override
                    public void result(Long ong1) {
                        insertedIdsList.add(ong1);
                    }

                });


            }

My Method

    Executor executor = Executors.newSingleThreadExecutor();

 public void getImageCount(Sequential_Fix data,int lastInsertid, Callback<Long> longCallback) {
        executor.execute(new Runnable() {
            @Override
            public void run() {
                AppDatabase db = AppDatabase.getDatabase(mContext.getApplicationContext());
                data.getImage().setName(String.valueOf(db.myImagesDao().getLastPosOfFolder(lastInsertid)));
                Log.e(DatabaseHelper.class.getSimpleName(), "run: "+data.getPos() );
                longCallback.result(db.myImagesDao().insertImage(data.getImage()));
            }
        });
    }

LogCat

2022-09-03 15:32:47.035 15396-17206/scancan.com.myscanner E/DatabaseHelper: run: 0
2022-09-03 15:32:47.041 15396-17210/scancan.com.myscanner E/DatabaseHelper: run: 3
2022-09-03 15:32:47.042 15396-17207/scancan.com.myscanner E/DatabaseHelper: run: 1
2022-09-03 15:32:47.042 15396-17209/scancan.com.myscanner E/DatabaseHelper: run: 2
2022-09-03 15:32:47.043 15396-17212/scancan.com.myscanner E/DatabaseHelper: run: 4
Sahil
  • 69
  • 8

0 Answers0