私の新しいアプリケーションの部屋を使用しようとしています。しかし、私のアプリを再起動するたびに、私は古いデータを取得することができません。私のアプリは毎回データベースの新しいインスタンスを作成しているようですが、なぜそれがわかりません。私のクラスはMVPパターンに基づいています。ルーム空のDbのアプリケーションの再起動後
編集:私はもう一度チェックして、エンティティ(MyModel)の自動生成Idが1にリセットされないことがわかりましたが、データを取得するときにそのセッションに挿入されたコレクションのみを取得します。
ダオ
@Dao
public interface MyDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
List<Long> insertModels(List<MyModel> models);
@Query("SELECT * FROM MyModel")
List<MyModel> getModels();
}
データベース
@Database(entities = {MyModel.class}, version = 1)
public abstract class MyDatabase extends RoomDatabase {
public abstract MyDao myDao();
}
DatabaseModule
@Module
public class DatabaseModule {
@Provides
@Singleton
MyDatabase provideMyDatabase(Application context) {
return Room.databaseBuilder(context.getApplicationContext(), MyDatabase.class, "MyDB").build();
}
@Provides
@Singleton
MyDao provideMyDao(MyDatabase myDatabase) {
return myDatabase.myDao();
}
}
データソース
@Singleton
public class MyDataSource {
MyDao mMyDao;
@Inject
public MyDataSource(@NonNull MyDao myDao) {
mMyDao = myDao;
}
}
リポジトリ
ApplicationComponent
@Singleton
@Component(modules = {AndroidSupportInjectionModule.class, ApplicationModule.class, DatabaseModule.class})
public interface ApplicationComponent extends AndroidInjector<MyApp> {
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
ApplicationComponent build();
}
}
のApp
public class MyApp extends DaggerApplication {
private ApplicationComponent mApplicationComponent;
@Override
protected AndroidInjector<? extends DaggerApplication> applicationInjector() {
mApplicationComponent = DaggerApplicationComponent.builder().application(this).build();
return mApplicationComponent;
}
}
は、あなたが何らかの形じゃないことをあなたは確かにあります移行メカニズムを起動しますか?それはRoom文書で私に目立つものです: 注意:必要な移行を行わないと、Roomはデータベースを再構築します。つまり、データベース内のすべてのデータが失われます。 (https://developer.android.com/training/data-storage/room/migrating-db-versions.html) –
いいえ、バージョン1です。さらに、私はアプリを再インストールせず、再起動します。 。 – fR0DDY
値がdbに正常に挿入されていますか?テストケースを作成して、データの挿入と取り出しが正常に行われるようにすることもできます。 – Gautam