У меня есть этот помощник по базам данных, и мне было поручено выполнять каждую операцию в потоке, потому что выполнение операции базы данных в потоке пользовательского интерфейса является плохой практикой.Затем я должен вернуть результат в поток пользовательского интерфейса с помощью хука.Также желательно блокировать поток при записи в базу данных, потому что, если я правильно помню, вы не можете одновременно записать 2 вещи в базу данных.
Вот фрагмент моего DBHelper:
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(Entry.CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + Entry.TABLE_NAME);
onCreate(db);
}
public long insertEntry(String type, String debtPerson, String amount, String description, String timestamp, boolean isPaid) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Entry.COLUM_TYPE, type);
values.put(Entry.COLUMN_PERSON_IN_DEBT, debtPerson);
values.put(Entry.COLUMN_AMOUNT, amount);
values.put(Entry.COLUMN_DESCRIPTION, description);
values.put(Entry.COLUMN_TIMESTAMP, timestamp);
values.put(Entry.COLUMN_IS_PAID, isPaid);
long id = db.insert(Entry.TABLE_NAME, null, values);
db.close();
return id;
}
public Entry getEntry(long id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(Entry.TABLE_NAME,
new String[]{Entry.COLUMN_ID, Entry.COLUM_TYPE, Entry.COLUMN_PERSON_IN_DEBT, Entry.COLUMN_AMOUNT, Entry.COLUMN_DESCRIPTION, Entry.COLUMN_TIMESTAMP, Entry.COLUMN_IS_PAID},
Entry.COLUMN_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
assert cursor != null;
Entry entry = new Entry(
cursor.getInt(cursor.getColumnIndex(Entry.COLUMN_ID)),
cursor.getString(cursor.getColumnIndex(Entry.COLUM_TYPE)),
cursor.getString(cursor.getColumnIndex(Entry.COLUMN_PERSON_IN_DEBT)),
cursor.getString(cursor.getColumnIndex(Entry.COLUMN_AMOUNT)),
cursor.getString(cursor.getColumnIndex(Entry.COLUMN_DESCRIPTION)),
cursor.getString(cursor.getColumnIndex(Entry.COLUMN_TIMESTAMP)),
cursor.getString(cursor.getColumnIndex(Entry.COLUMN_IS_PAID)));
cursor.close();
return entry;
}
Я хочу каждую операцию от
public long insertEntry(...) {
[...]
return id;
}
до
public void insertEntry(...){
Thread thread = new Thread(new Runnable(){
@Override
public void run(){
[...]
[ADD HOOK HERE]
}
});
thread.start();
}
Как я могу сделать это и добавить хук?Я новичок в темах!