回答

1

我相信,如果你不使用android架構組件ViewModel,兩個庫都是一樣的。

使用ViewModel,您可以防止旋轉設備時的數據準備,即ViewModel保留在內存中,即使活動必須重新啓動以響應設備旋轉。我不認爲RxLifecycle庫中存在這樣的組件。

2

不,您不需要使用RxLifecycle,但如果您使用RxJava,則可能會使用RxLifecycle。

如果您使用RxJava,您必須關心訂閱和取消訂閱自己。 Androids新的LiveData(它類似於Rx Observables)通過使用android-arch生命週期來完成此操作。如果您還想在RxJava中使用生命週期知識,則可以使用RxLifecycle。如其Github頁面所述,RxLifecylce需要一個生命週期提供程序。生成生命週期提供程序的一個解決方案是使用android-arch生命週期。

public class MyActivity extends LifecycleActivity { 
private final LifecycleProvider<Lifecycle.Event> provider 
    = AndroidLifecycle.createLifecycleProvider(this); 

@Override 
public void onResume() { 
    super.onResume(); 
    myObservable 
     .compose(provider.bindToLifecycle()) 
     .subscribe(); 
} 

編輯:RxLifecycle可能在某些情況下的問題,這就是爲什麼創作者recomends使用AutoDispose或處理subscrption改爲手動。他在this post中描述了這些問題。

相關問題