私のチームは、Roomを幅広く使用する新しいAndroidアプリを開発しました。Android Room + AsyncTask
AsyncTaskを正しく使用しているかどうかは不明です。
AsyncTasksで挿入/更新/削除の呼び出しをすべてラップする必要があり、結果として膨大な数のAsyncTaskが発生しました。ルームへのすべてのコールはバックグラウンドサービスからのものです。アクティビティやフラグメントから直接ルームにアクセスすることはできず、LiveData経由ですべてを取得します。
行を挿入する例のコール:DAOでこれで
AsyncTask.execute(() -> myModelDAO.insertInstance(myModel));
を:部屋に
@Insert
void insertInstance(MyModel model);
insert queryはアンドロイドのUIスレッドをロックできますが、これは許可されていません。バックグラウンド非同期またはRXの内部に挿入する必要があります –
@MunishThakur:はい、しかし、AsyncTaskを伴わない非同期作業を行う方法はたくさんあります。 – CommonsWare
右、lambaとkotlinのサポートeveythingは短いイベントです。非同期タスクも1つのライナーです:-) AsyncTask.execute({//コードを実行する} –