我正在使用 Room,并在资产文件夹中预填充数据库。对于应用程序更新,我想通过添加新列并用新数据预填充此列来更改此数据库。
数据库从版本 1 自动迁移到版本 2(添加了一个表)。从版本 2 到版本 3,我现在想通过在资产文件夹中提供不同的“database.db”文件并允许破坏性迁移来应用上述更改。
@Database(entities = [Object1::class, Object2::class], version = 3, autoMigrations = [
AutoMigration (from = 1, to = 2)], exportSchema = true)
abstract class AppDatabase : RoomDatabase() {
abstract fun dao(): Dao
companion object {
private const val DB_NAME = "database.db"
@Volatile
private var instance: AppDatabase? = null
fun getInstance(context: Context): AppDatabase {
return instance ?: synchronized(this) {
instance ?: buildDatabase(context).also { instance = it }
}
}
private fun buildDatabase(context: Context): AppDatabase …Run Code Online (Sandbox Code Playgroud) 单击我的应用程序中的通知时,我正在使用 newIntent 传递正确的 taskId。这是我的广播接收器的 onReceive() 中的代码:
Intent newIntent = new Intent(context, TaskActivity.class);
int taskId = intent.getIntExtra("taskId", 0);
newIntent.putExtra("taskId", intent.getIntExtra("taskId", 0));
Notification notification = new NotificationCompat.Builder(context)
.setContentTitle(intent.getStringExtra("NotificationTitle"))
.setContentText(intent.getStringExtra("NotificationText"))
.setSmallIcon(intent.getIntExtra("NotificationIcon", 0))
.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, 0))
.build();
Run Code Online (Sandbox Code Playgroud)
这是接收 Intent 的活动的代码
if (getIntent().hasExtra("taskId")) {
currentTask = dataSource.fetchTask(getIntent().getIntExtra("taskId", 0));
}
Run Code Online (Sandbox Code Playgroud)
当我调试时,方法 getIntExtra() 返回的值与广播接收器的 onReceive() 中的值不同。
任何想法为什么会发生这种情况?
谢谢!