第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

插入 Room Persistence Library Android Studio

插入 Room Persistence Library Android Studio

繁花不似錦 2022-12-21 13:01:00
我一直在使用代碼實(shí)驗(yàn)室來(lái)實(shí)現(xiàn)我的房間數(shù)據(jù)庫(kù)持久性。現(xiàn)在我試圖在將數(shù)據(jù)插入我的房間數(shù)據(jù)庫(kù)后獲取最新的 rowID。但是,我被困在我的存儲(chǔ)庫(kù)中,試圖從我的 AsyncTask 返回 rowID。LogEntity.java@Entitypublic class LogEntity {    @PrimaryKey(autoGenerate = true)    private int id;LogDao.javapublic interface LogDao {    @Insert    long insert(LogEntity logEntity);LogDatabase.java@Database(entities = LogEntity.class, version = 1)public abstract class LogDatabase extends RoomDatabase {    private static LogDatabase instance;    public abstract  LogDao logDao();    public static synchronized LogDatabase getInstance(Context context){        if (instance == null){            instance = Room.databaseBuilder(context.getApplicationContext(),                    LogDatabase.class, "log_database").                    fallbackToDestructiveMigration().build();        }        return instance;    }}LogRepository.java    public long insertLogs(LogEntity logEntity) {        new InsertLogAsyncTask(logDao).execute(logEntity);        return **    }    private static class InsertLogAsyncTask extends AsyncTask<LogEntity, Void, Long>{        private LogDao logDao;        private InsertLogAsyncTask(LogDao logDao){            this.logDao = logDao;        }        @Override        protected Long doInBackground(LogEntity... logEntities) {            logDao.insert(logEntities[0]);            return logDao.insert(logEntities[0]);        }    }我放了兩個(gè)星號(hào)是因?yàn)槲也淮_定在這里要做什么才能獲得插入的 RowID 以及我的 AsyncTask 是否完全正確。LogViewModel.java    public long insertLog(LogEntity logEntity){        return repository.insertLogs(logEntity);    }MainActivity.java        long id = logViewModel.insertLog(logEntity);我希望能夠使用此最終 id 變量以供將來(lái)使用。
查看完整描述

1 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

您走在正確的軌道上,但還不完全正確。您應(yīng)該將 AsyncTask 類聲明為 ViewModel 的內(nèi)部類,而不是數(shù)據(jù)庫(kù)。


在 ViewModel 中添加一個(gè) ID 變量,在 AsyncTask 中添加onPostExecute覆蓋以處理執(zhí)行結(jié)果。


LogViewModel.java


long mLastInsertedID;


private static class InsertLogAsyncTask extends AsyncTask<LogEntity, Void, Long>{

    private LogDao logDao;

    private InsertLogAsyncTask(LogDao logDao){

        this.logDao = logDao;

    }

    @Override

    protected Long doInBackground(LogEntity... logEntities) {

        //you are now off the UI thread

        logDao.insert(logEntities[0]);

        return logDao.insert(logEntities[0]);

    }


    @Override

    protected void onPostExecute(Long result) {

        //Do whatever you like with the result as you are back on the UI thread

        mLastInsertedID = result;

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-21
  • 1 回答
  • 0 關(guān)注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)