2016-08-18 28 views
0

關閉數據庫,如果我做這樣的事情:是境界後退訂

Realm realm = Realm.getDefaultInstance(); 
Subscription subscription = realm.where(Person.class).findAllAsync().asObservable() 
    .filter(persons.isLoaded) 
    .subscribeOn(Scheduler.io()) 
    .observeOn(AndroidSchedulers.mainThread()) 
    .subscribe(); 

... 

subscription.unsubscribe(); 

unsubscribe()內部調用realm.close()或做我必須手動調用?

+0

我認爲你的代碼應該給你'IllegalStateException:來自不同線程的Realm訪問'。 – EpicPandaForce

回答

0

退訂()內部調用realm.close()還是必須手動調用它?

它不會關閉你的領域,你必須手動做到這一點。

對於單個領域實例,您可以有多個訂閱,取消訂閱任何這些訂閱都不應關閉領域,因爲您可能仍想使用其他訂閱。

另請參閱Realm提供的RxJava example project

另請注意,訂閱是RxJava類,而不是Realm類。它甚至不知道你在使用Realm,因此如果它關閉了這個領域將會很奇怪。

+0

謝謝...太糟糕了...想避免在'Activity.onDestroy()'中調用'reaml.close()'... – sockeqwe

+0

@sockeqwe爲什麼?這是推薦的方法 –

+1

也許我錯過了一些東西,但我想成爲Android生命週期不知道...我想我會找到一些解決方法是rx訂閱生命週期知道,而不是android生命週期知道 – sockeqwe