Aşağıdaki etkinlik gibi durumlarda AndroidObservable.bindActivity(...)
kullanmak gerçekten gerekli midir? Yine de manuel olarak onDestroy
'dan yine de aboneliğinizi iptal etmeniz gerekiyor.RxAndroid: bindActivity ne zaman kullanılır ve neden?
this blog mesaja göre, bindActivity gerekli böyledir: kadar
yapmak geçerlidir sonra
yanlışlıkla durumunu değiştirme kalkma hangi Okuduğum -the yolu Bu,
finish()
den sonra aktivite ile ilgili bazı şeyleri yaptığınızda sorunlar olabileceği anlamına gelir ve böylece onDestroy'da üyelikten çıkmak çok geç olur.OnDestroy'da olduğu gibi abonelikten çıkmanın gerçekten bir sorun olması durumunda bana bir örnek verebilir misiniz? Eğer
AndroidObservable.java
için the source bakarsak
bindActivity için kullanılan yüklem fonksiyonudur:
:private static final Func1<Activity, Boolean> ACTIVITY_VALIDATOR = new Func1<Activity, Boolean>() { @Override public Boolean call(Activity activity) { return !activity.isFinishing() && !activity.isChangingConfigurations(); } };
private static final Func1<Activity, Boolean> ACTIVITY_VALIDATOR = new Func1<Activity, Boolean>() { @Override public Boolean call(Activity activity) { return !activity.isFinishing(); } };
aynı zamanda gibi yapılandırma değişiklikleri kontrol etmek daha iyi olmaz
???
onSaveInstanceState
çağrıldıktan sonra senin birDialogFragment
sonraonDestroy
önce amaonSaveInstanceState
sonra uygulamanın çökmesine neden oluyordu yapıyor açılır abone eğer, böylece parça işlemleri yapamazpublic class SomeActivity extends Activity implements Observer<String> { private Subscription subscription; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); subscription = getObservable().observeOn(AndroidSchedulers.mainThread()).subscribe(this); // or use bindActivity here???? // subscription = AndroidObservable.bindActivity(this, getObservable()).subscribe(this); } @Override protected void onDestroy() { super.onDestroy(); subscription.unsubscribe(); } @Override public void onNext(String s) { // do something with the activity state... } @Override public void onCompleted() {} @Override public void onError(Throwable throwable) {} }
Net cevap! Teşekkürler. –
Belki de artık etrafta değilsiniz, ancak DialogFragments'ı sade Diyaloglar yerine kullanmanın bir nedeni var mı? Bu hataya birçok kez karşı karşıya geldim ve bu noktada vazgeçtim ve kullanımdan kaldırılanlara geri döndüm. –
@ MLProgrammer-CiM DialogFragment', etkinliğe bağlı "Dialog" yerine bir Fragman yaşam döngüsüne sahiptir. Basit "Dialog" un aksine rotasyondan kolayca kurtulabilirler. – GDanger