애플리케이션의 여러 부분에서 공유되는 플로블이 있다고 가정 해 보겠습니다.처리해야 할 사항() LiveDataReactiveStreams를 사용하여 만든 게시자
관찰하고자하는 각 조각에서 누출 및 충돌을 피하기 위해 LiveDataReactiveStreams.fromPublisher
으로 LiveData로 변환합니다. 이제 Flowable을 래핑하는 LiveData가 생겼습니다.
그런 다음 ViewModel (ViewModelFactory의)에 내 ViewModel에 LiveData를 전달합니다. 내가 아는 한, 누출에 대해 걱정하지 않고 LiveData를 사용할 수 있습니다.
이제 LiveData를 직접 관찰하는 대신 LiveDataReactiveStreams.toPublisher
및 Flowable.fromPublisher
을 사용하여 Flowable로 다시 변환하고 Flowable에 가입하려고합니다. Flowable을 래핑하는 LiveData를 래핑하는 Flowable입니다.
제 질문은 :이 Flowable에 대한 구독을 처분해야합니까? 내 희망은 LiveData가 "장벽"으로 작용하여 내 맥락이 플로 플라이 루트로 유출되지 못하도록 방지하지만 그 점에 대해서는 확실하지 않습니다. 환언
:
- 유동성 글로벌 문맥은 단편의 속성으로 설정되어 LiveData B에 싸여 각 프래그먼트
- , 존재 뷰 모델
- 평소에 LiveData B을 관찰했을 때 대신 Flowable로 마무리했습니다. C
- 난 C를 유동 및 단편이 파괴 될 때 최대 누설 C에서 액세스 반환 일회용
윌보기 무시 가입?
나는 그것이 나를 구독 취소하지 않는다는 것을 이해하지만 나의 질문은 : 조각이 파손되었을 때 실제로 누출 될 것인가? 그렇다면 어디서/어떻게이 누수가 발생합니까? –
구독자가 게시자에게 유출됩니다. – tynn
나는 지금까지 당신과 함께하고 있지만 조각이 GC : ed 일 때 게시자가 GC : ed (구독과 함께)가되지 않습니까? 내가 볼 수있는 한 여기에 작성된 모든 참조는 순환으로 이루어 지므로 누출이 발생하지 않도록해야합니다 (분명히 바보 같은 일을하지 않는 한). –