realmforandroid
❶ Realm 資料庫 for android,是不是不適合在MVP模式中
MVP模式是MVC模式在Android上的一種變體,要介紹MVP就得先介紹MVC。在MVC模式中,Activity應該是屬於View這一層。而實質上,它既承擔了View,同時也包含一些Controller的東西在裡面。這對於開發與維護來說不太友好,耦合度大高了。把Activity的View和Controller抽離出來就變成了View和Presenter,這就是MVP模式。在Android項目中,Activity和Fragment占據了大部分的開發工作。如果有一種設計模式(或者說代碼結構)專門是為優化Activity和Fragment的代碼而產生的,你說這種模式重要不?這就是MVP設計模式。按照MVC的分層,Activity和Fragment(後面只說Activity)應該屬於View層,用於展示UI界面,以及接收用戶的輸入,此外還要承擔一些生命周期的工作。Activity是在Android開發中充當非常重要的角色,特別是TA的生命周期的功能,所以開發的時候我們經常把一些業務邏輯直接寫在Activity裡面,這非常直觀方便,代價就是Activity會越來越臃腫,超過1000行代碼是常有的事,而且如果是一些可以通用的業務邏輯(比如用戶登錄),寫在具體的Activity里就意味著這個邏輯不能復用了。如果有進行代碼重構經驗的人,看到1000+行的類肯定會有所顧慮。因此,Activity不僅承擔了View的角色,還承擔了一部分的Controller角色,這樣一來V和C就耦合在一起了,雖然這樣寫方便,但是如果業務調整的話,要維護起來就難了,而且在一個臃腫的Activity類查找業務邏輯的代碼也會非常蛋疼,所以看起來有必要在Activity中,把View和Controller抽離開來,而這就是MVP模式的工作了。
❷ realm-java 有什麼缺點以及 Android 如何比較合理的選擇資料庫
專業手機研發工程師為你解答: Android是Google推出的手機操作系統,基於Linux內核的開源系統,其內核是C和C++寫的,其上層的應用完全用Java開發,所以Android的手機沒有什麼沒有Java和有Java的卻別之說,但是,既然你這么說,可以斷定你說的是標准Java的一個版本:J2me,她是真正跨平台的手機開發語言,但是前提是你的手機要實現Midp2.0核心包,才可以說「有Java」。2.0的Android系統是比較高版本的操作系統了,最新的才2.2。 如果說你很在乎「有沒有Java」的話,就看那個手機有沒有實現MIDP吧,區別就在可以不可以運行J2me開發的程序,對於那麼高版本的Android手機來說,這個很不重要了!! 至於你說的那幾個手機版本,大陸行貨是指正規渠道進入大陸的手機,交了關稅的,因此價格會高一些,而其他的水貨是指通過「其他渠道」進入內地,可能是走私,躲避了高關稅這一關,所以價格相對便宜。但是質量,沒有水貨就是垃圾之說,質量垃圾的是山寨貨不是水貨,水貨是進口渠道不正規,因此售後無法得到保障而已! 希望對您有所幫助!
❸ realm android能進行json解析嗎
資料庫一直以來給我的感覺就是——麻煩!!!
接觸了Realm之後才終於可以開開心心的使用資料庫了。
本文總結一些Realm資料庫的常用知識點,包括多線程訪問,以及如何與Retrofit2.0一起使用等...
看懂這些知識點之後,個人認為就可以在一般的項目中使用Realm了。
1. model類必須extends RealmObject,所有屬性必須用private修飾
2. model中支持基本數據結構:boolean, byte, short, ìnt, long, float, double, String, Dateand byte[]
3.若要使用List必須用RealmList<T>,或者繼承RealmList
4.與Retrofit2.*一起使用,通過Gson來解析Json數據並直接生成RealmObject,可參考如下寫法:
[java] view plain
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getDeclaringClass().equals(RealmObject.class);
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
❹ 為什麼我不再使用Realm
1. 添加Realm到工程 要在安卓工程中使用Realm,你需要在mole的build.gradle文件中添加一個添加一個依賴: compile 'io.realm:realm-android:0.84.1' 2. 創建一個Realm 一個Realm相當於一個sqlite資料庫。它有一個與之對應的文件,一旦創建將持...
❺ realm android怎麼使用
1. 添加Realm到工程
要在安卓工程中使用Realm,你需要在mole的build.gradle文件中添加一個添加一個依賴:
compile 'io.realm:realm-android:0.84.1'
2. 創建一個Realm
一個Realm相當於一個SQLite資料庫。它有一個與之對應的文件,一旦創建將持久保存在安卓的文件系統中。
要創建一個新的Realm,你可以在任意Activity中調用靜態方法Realm.getInstance。
Realm myRealm = Realm.getInstance(context);
注意,調用Realm.getInstance,而沒有傳入RealmConfiguration,會創建一個叫做 default.realm的Realm文件。
如果你想向app中添加另一個Realm,必須使用一個RealmConfiguration.Builder對象,並為 Realm file 指定一個獨有的名字。
Realm myOtherRealm =
Realm.getInstance(
new RealmConfiguration.Builder(context)
.name("myOtherRealm.realm")
.build()
);
3. 創建一個RealmObject
只要繼承了RealmObject類,任意JavaBean都能存儲在Realm中。不知道JavaBean是什麼?它就是一個可序列化的java類,有默認構造器,成員變數有相應的getter/setter方法。比如,下面這個類的實例就能輕松的存儲在一個Realm中:
public class Country extends RealmObject {
private String name;
private int population;
public Country() { }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPopulation() {
return population;
}
public void setPopulation(int population) {
this.population = population;
}
}
如果你想讓RealmObject的一個成員變數作為主鍵,你可以使用@PrimaryKey註解。比如,這里演示了如何為Country類添加一個主鍵code:
@PrimaryKey
private String code;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
4. 創建transaction
雖然從一個Realm讀取數據非常簡單(下一節有講),但是向它寫入數據就稍微復雜一點。Realm遵循 ACID (資料庫事務正確執行的四個基本要素的縮寫)規范,為了確保原子性和一致性,它強制所有的寫入操作都在一個事務中執行。
要開始一個新的事務,使用beginTransaction方法。類似地,要結束這個事務,使用commitTransaction方法。
註:事務即英文裡面的transaction。
這里演示了如何創建和保存一個Country類的實例:
myRealm.beginTransaction();
// Create an object
Country country1 = myRealm.createObject(Country.class);
// Set its fields
country1.setName("Norway");
country1.setPopulation(5165800);
country1.setCode("NO");
myRealm.commitTransaction();
你可能注意到了country1並不是用Country類的構造器創建的。對於一個Realm來說,管理一個RealmObject的實例,這個實例必須用createObject方法創建。
如果你必須使用構造器,別忘了在提交事務前使用相關Realm對象的ToRealm方法。這里是示例:
// Create the object
Country country2 = new Country();
country2.setName("Russia");
country2.setPopulation(146430430);
country2.setCode("RU");
myRealm.beginTransaction();
Country OfCountry2 = myRealm.ToRealm(country2);
myRealm.commitTransaction();
5. 書寫查詢
Realm為創建查詢提供了一套非常直觀和流式的API。要創建一個查詢,使用相關Realm對象的where方法並傳入你感興趣的對象的類。創建完查詢之後,你可以使用返回一個RealmResults對象的findAll方法獲取所有的結果,findAll。在下面的例子中,我們獲取並列印Country的所有對象:
RealmResults<Country> results1 =
myRealm.where(Country.class).findAll();
for(Country c:results1) {
Log.d("results1", c.getName());
}
// Prints Norway, Russia
Realm提供了幾個命名非常貼切的方法,比如beginsWith, endsWith,lesserThan 和 greaterThan,可以用來過濾,篩選結果。下面的代碼演示了如何使用greaterThan方法來獲取population(人口)大於1億的Countryobjects:
RealmResults<Country> results2 =
myRealm.where(Country.class)
.greaterThan("population", 100000000)
.findAll();
// Gets only Russia
如果你想查詢結果被歸類,你可以使用findAllSorted方法。在它的參數中,用一個String指定被歸類field的名字,並用一個boolean指定歸類順序。
// Sort by name, in descending order
RealmResults<Country> results3 =
myRealm.where(Country.class)
.findAllSorted("name", false);
// Gets Russia, Norway
❻ android realm的findfirst是啥意思
ndroid平台有很多的orm框架可以對數據作本地存儲,比如ormlite、greenDao、SugarORM等等,這些orm框架基本都是基於sqlite的。今天我要介紹的這個資料庫Realm,是用來替代sqlite的一種解決方案,它有一套自己的資料庫存儲引擎,比sqlite更輕量級,擁有更快的速度,最重要的是跨平台,目前已有Java,Objective C,Swift,React-Native,Xamarin這五種實現。在項目的build文件加上buildscript {
repositories {
jcenter()
}
dependencies {
...
classpath "io.realm:realm-gradle-plugin:1.2.0"
}
❼ android 怎麼升級 realm-android
資料庫Realm,是用來替代sqlite的一種解決方案,它有一套自己的資料庫存儲引擎,比sqlite更輕量級,擁有更快的速度,並且具有很多現代資料庫的特性,比如支持JSON,流式api,數據變更通知,自動數據同步,簡單身份驗證,訪問控制,事件處理,最重要的是跨平台,目前已有Java,Objective C,Swift,React-Native,Xamarin這五種實現。
❽ android 怎麼使用realm.insertorupdate
Intent(意圖)主要是解決Android應用的各項組件之間的通訊。 為了實現傳遞數據這個目的需要以下步驟 Activity1需要構造一個 Intent,這個Intent用於告訴系統,我們要做「查看」動作 intent可調用putExtra來存放想要傳遞的數據 然後調用setClass,設置Activity1和欲調用的組件Activity2 最後調用startActivity將構造的Intent傳入,系統會根據此Intent中的描述,到Activity1中找到滿足此Intent要求的Activity,系統會調用找到的 Activity2最終傳入Intent 在Activity2中可使用getIntent來獲取傳遞的Intent,並通過獲取數據的方法來獲取數據 代碼示例: Intent intent = new Intent(); // Activity1 intent.putExtra("one", num1); intent.putExtra("two", num2); intent.setClass(FirstActivity.this, SecondActivity.class); startActivity(intent); Intent intent = getIntent(); //Activity2 String num1 = intent.getStringExtra("one"); String num2 = intent.getStringExtra("two"); int ret = Integer.parseInt(num1) + Integer.parseInt(num2); result.setText(ret+"");注意:我們在使用intent的時候可以使用bundle傳遞復制的數據類型。
❾ 如何從Realm資料庫Android中刪除對象
首先,的刪除資料庫某一列的值分幾種情況:
不刪除欄位,只更新其中的內容
在資料庫中其實叫做更新(update)
語句如下:
update 表 set 欄位=null
2、刪除欄位
alter table 表 drop column 欄位