Répondre

1

Je crois, si vous n'utilisez pas le composant architectural ViewModel android, les deux bibliothèques seront les mêmes.

Avec ViewModel, vous pouvez empêcher la préparation des données lors de la rotation du périphérique, ce qui signifie que ViewModel reste en mémoire, même si l'activité doit redémarrer en réponse à la rotation du périphérique.

Je ne pense pas qu'un tel composant existe dans la bibliothèque RxLifecycle.

2

Non, vous n'avez pas besoin d'utiliser RxLifecycle mais si vous utilisez RxJava, il peut être utile d'utiliser RxLifecycle.

Si vous utilisez RxJava vous devez vous soucier de vous abonner et de vous désabonner. Androids nouveau LiveData (qui est similaire à la Rx Observables) le fait lui-même en utilisant le cycle de vie android-arch. Si vous souhaitez également connaître votre cycle de vie dans RxJava, vous pouvez utiliser RxLifecycle. Comme décrit sur leur page Github, RxLifecylce a besoin d'un fournisseur Lifecycle. Et une solution génère le Lifecycle Provider est d'utiliser le cycle de vie 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(); 
} 

Edit: RxLifecycle peut avoir des problèmes dans certains cas, c'est pourquoi le créateur recomends à utiliser AutoDispose ou manipuler subscrption manuellement. Il décrit les problèmes dans this post.