Có thực sự cần thiết để sử dụng AndroidObservable.bindActivity(...)
trong các trường hợp như hoạt động dưới đây không? Vì bạn vẫn cần hủy đăng ký thủ công theo số onDestroy
.RxAndroid: khi nào sử dụng bindActivity và tại sao?
Theo this blog bưu điện, bindActivity là cần thiết để:
bạn không vô tình cố gắng để thay đổi trạng thái sau khi nó có giá trị để làm như vậy
mà -the cách tôi đọc nó- có nghĩa là có thể có vấn đề khi bạn làm một số việc với hoạt động sau khi finish()
được gọi và do đó hủy đăng ký onDestroy sẽ quá muộn.
Bất kỳ ai có thể cho tôi ví dụ về việc hủy đăng ký muộn như trong onDestroy có thực sự là vấn đề không?
Nếu bạn nhìn vào the source cho AndroidObservable.java
chức năng ngữ sử dụng cho bindActivity là:
private static final Func1<Activity, Boolean> ACTIVITY_VALIDATOR = new Func1<Activity, Boolean>() {
@Override public Boolean call(Activity activity) {
return !activity.isFinishing();
}
};
Nó sẽ không được tốt hơn cũng để kiểm tra các thay đổi cấu hình, như:
private static final Func1<Activity, Boolean> ACTIVITY_VALIDATOR = new Func1<Activity, Boolean>() {
@Override public Boolean call(Activity activity) {
return !activity.isFinishing() && !activity.isChangingConfigurations();
}
};
???
SomeActivity.java
public 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) {}
}
Xóa câu trả lời! Cảm ơn. –
Có thể bạn không còn ở đây nữa, nhưng có lý do gì để sử dụng DialogFragments thay vì Dialog thuần túy không? Tôi đã faceplanted chống lại lỗi này rất nhiều lần và tại thời điểm này tôi chỉ cần bỏ và quay trở lại những người không được chấp nhận. –
@ MLProgrammer-CiM 'DialogFragment' có vòng đời Fragment thay vì' Dialog' được gắn với hoạt động. Chúng có thể dễ dàng tồn tại luân phiên, không giống như 'Dialog' đơn giản. – GDanger