如何在 Room 中实现同步(Android 持久化库)

How to achieve Synchronization in Room (Android persistence library)

在普通的sqlite中,我们可以很容易地实现同步,但是如何在Room中实现呢

如你所述"this is easy to achieve synchronization with SQLITE"

Room 在内部使用 SQLite 数据库。 我相信 SQLite 的方法可以在 Room 中访问。 因此,房间也应该很容易。

这表示 Sqlite 类 已包装到 Room 类 中,您可能需要编写一些管道。 您使用什么来轻松同步?

这里是 sample,它展示了如何将 Room 与 Content Provider 结合使用,然后您可以 link (ContentProvider ) 与您的 SynchronizationAdapter 结合使用。

话虽如此,您可以像这样修改您的房间模型

@Entity(tableName = Student.TABLE_NAME) 
public class Student { 
    /** The name of the Student table. */ 
    public static final String TABLE_NAME = "student"; 


    /** The name of the ID column. */ 
    public static final String COLUMN_ID = BaseColumns._ID; 


    /** The name of the name column. */ 
    public static final String COLUMN_NAME = "name"; 


    /** The unique ID of the Student*/ 
    @PrimaryKey(autoGenerate = true) 
    @ColumnInfo(index = true, name = COLUMN_ID) 
    public long id; 


    /** The name of the Student*/ 
    @ColumnInfo(name = COLUMN_NAME) 
    public String name; 


    /** 
     * Create a new {@link Studentfrom the specified {@link ContentValues}. 
     * 
     * @param values A {@link ContentValues} that at least contain {@link #COLUMN_NAME}. 
     * @return A newly created {@link Student} instance. 
     */ 
    public static Student fromContentValues(ContentValues values) { 
        final Student student= new Student(); 
        if (values.containsKey(COLUMN_ID)) {
            student.id = values.getAsLong(COLUMN_ID); 
        } 
        if (values.containsKey(COLUMN_NAME)) { 
            student.name = values.getAsString(COLUMN_NAME); 
        }
        return student; 
    }
}
@Database(entities = [Student::class,Teacher::class], version = 1, exportSchema = false)
@TypeConverters(DataTypeConverter::class)
abstract class ClassDatabase : RoomDatabase() {

 // initiate database

 abstract fun studentDao()
 abstract fun teacherDao()
}

val database = ClassDatabase(context)
database.beginTransaction()
try{
   //write your operations
    database.setTransactionSuccessful()
   }
finally{
    database.endTransaction()
     }