小编Zah*_*lan的帖子

Room.createFromAsset() 每次打开应用程序时都会重写应用程序的数据库

我试图在首次安装时从资产数据库初始化我的应用程序的数据库。但是,在应用程序关闭之前它可以正常工作。当我再次打开应用程序时,它会调用createFromAsset(). 据我所知,问题在于我正在获取应用程序数据库的实例并使用资产数据库重写它。createFromAsset()仅当应用程序第一次安装时才需要调用我。

@Database(entities = {ActivitySession.class}, exportSchema = true, version = 1)
public abstract class ActivityPackageDatabase extends RoomDatabase {

private static ActivityPackageDatabase INSTANCE;


public static ActivityPackageDatabase getDatabase(final Context context) {
        if (INSTANCE == null) {
            synchronized (ActivityPackageDatabase.class) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
                            ActivityPackageDatabase.class, "appDB")
                            .createFromAsset("database/assetDB.db")
                            .fallbackToDestructiveMigration()
                            .build();
                }
            }
        }
        return INSTANCE;
    }
Run Code Online (Sandbox Code Playgroud)

以防万一有实体和 DAO 的示例

@Entity
public class SessionPhoto {
    @PrimaryKey(autoGenerate = true)
    public long id;

    public long sessionId;
    public String path; …
Run Code Online (Sandbox Code Playgroud)

java orm android android-room android-room-prepackageddatabase

4
推荐指数
1
解决办法
1632
查看次数