Android中的Room和Realm有什么区别?

时间:2018-06-20 07:01:53

标签: android performance

Android中的Room和Realm有什么区别?

我进行了研究并阅读了文档,但是我自己没有经验来理解

https://developer.android.com/topic/libraries/architecture/room

https://realm.io/docs/java/latest/

1 个答案:

答案 0 :(得分:1)

Realm具有预定义的查询,您只需要传递参数,而在房间内,您必须像sqlite一样编写查询。 简而言之,它是sqlite的升级版本。

在领域:(保存数据)

public void savePictureData(final String shopId, final String imgPath)     
{   
realm.executeTransactionAsync(new Realm.Transaction() {
@Override   
public void execute(Realm realm) {    
RealmSave_Data realmData =realm.createObject(RealmSave_Data.class);
realmData.setShopId(shopId);     
realmData.setImgPath(imgPath);      
}
}, new Realm.Transaction.OnSuccess() {      
@Override      
public void onSuccess() {        
new Handler(Looper.getMainLooper()).post(new Runnable() {       
@Override       
public void run() {        
System.out.println("-----saveddata");       
}       
});        
// Transaction was a success.       
}       
}, new Realm.Transaction.OnError() {              
@Override       
public void onError(Throwable error) {        
System.out.println("-----errordata");         
// Transaction failed and was automatically canceled.        
}       
});      
} 

在领域:(检索数据)

List<RealmSave_Data> dataList  
      =realmHelper.getPic(String.valueOf(shopDetails.getId()));          

public List<RealmSave_Data> getPic(String shopId){            
//ArrayList<String> picPath = new ArrayList<>();
RealmResults<RealmSave_Data> realmData = 
realm.where(RealmSave_Data.class).equalTo("shopId",shopId).findAll();            
return realmData;        
}         

在房间里:

@Query("SELECT * FROM UserTable WHERE username=:username AND password=:password")
     Flowable<UserTable> getUser(String username,String password);