i have problem with get data from SQLite Cursor window allocation of 2048 kb failed using Thread background service
but if i run List branchList= DBTransaction.BranchList(); without Thread background service, this function is working normally
MyService.Java
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "Service onStartCommand");
new Thread(new Runnable() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void run() {
while(true)
{
List<Branch> branchList= DBTransaction.BranchList();
if (branchList.size() < 0)
getBranch(); //get branch using volley get data from web service
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
return START_STICKY;
}
SQLite GetData
public List<Branch> BranchList(){
List<Branch> branchList = new ArrayList<Branch>();
String selectQuery = "SELECT * FROM " + TABLE_BRANCH;
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = null;
try {
cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()){
do{
Branch branch = new Branch();
branch.setID(cursor.getString(0));
branch.setName(cursor.getString(1));
branch.setCode(cursor.getString(2));
branchList.add(branch);
}while (cursor.moveToNext());
}
}finally {
if(cursor != null)
cursor.close();
}
return branchList;
}
Error result from android monitor
E/Volley: [10497] NetworkDispatcher.run: Unhandled exception android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=8 (# cursors opened by this proc=8)
android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=8 (# cursors opened by this proc=8)