Каков наилучший способ получить идентификатор недавно вставленной строки в базе данных комнаты?
Я уже знаю, что @insert может вернуться долго.
Возможно ли достичь этого с помощью AsyncTask?
DatabaseInitializer.java
public class DatabaseInitializer {
private static roomDatabase rDb;
public DatabaseInitializer(Context context) {
rDb= roomDatabase.createDatabase(context);
}
public void insertPlayer(String pname,String ppic) {
Players player = new Players();
player.setPname(pname);
player.setPpic(ppic);
insertPlayer(player);
}
private static void insertPlayer(final Players player) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
rDb.playerDao().insert(player);
return null;
}
}.execute() ;
}
}
Наконец, я сделал это так:
public Long insertPlayer(String pname,String ppic) {
Players player = new Players();
player.setPname(pname);
player.setPpic(ppic);
return insertPlayer(player);
}
static Long playerId;
private static Long insertPlayer(final Players player) {
try {
new AsyncTask<Void, Void, Long>() {
@Override
protected Long doInBackground(Void... voids) {
playerId = rDb.playerDao().insert(player);
return playerId;
}
@Override
protected void onPostExecute(Long pID) {
super.onPostExecute(playerId);
}
}.execute().get();
}catch (Exception ex){ex.printStackTrace();}
return playerId;
}