RxLifecycle 대안
observable
...
.compose(this.<>bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(...);
Activity나 Fragment에서 이렇게 쓰는 것은 정말 편리하다. 단지 우리의 구조가 MVP나 MVVM이라면 P층, VM층에서 어떻게 쓰는가?
내 디자인은 이렇다. 데이터 공급자인 DataProvider가 있는데 당연히 하나의 예이다. 예를 들어
DataProvider.get().getNews() --> Observable
DataProvider.get().getLoginUser() --> Observable
현재 객체를 바인딩해야 하는 경우
DataProvider.get().tag(this).getNews()
DataProvider.get().tag(this).getLoginUser()
이 tag 방법의 매개 변수는 Object입니다. (이 Object는 필연적으로 어떤 맵의 키입니다.) 그리고Activity on Destroy () 에서
DataProvider.get().cancel(this);
이 tag 방법의 매개 변수가 Object인 이상 P층, VM층에서 편리하다. 귀속할 때 바로 tag(this)를 하고 BasePresenter나BaseViewModel이 있어야 한다. 그 안에destroy() 방법을 쓰고Activity on Destroy()에서vieModwel을 호출해야 한다.Destroy () 로 끝납니다.
public class BaseViewModel {
public void destroy() {
DataProvider.get().cancel(this);
}
}
그래서 DataProvider가 어떻게 이루어졌는지가 관건이에요.
public abstract class AbstractDataProvider implements WebService {
protected Map
DataProvider는 주로 Abstract DataProvider보다 tag() 방법이 많고, tag()는 Abstract DataProvider로 되돌아와 여러 번 tag()가 호출되는 것을 방지한다.
public class DataProvider extends AbstractDataProvider {
private static class DataProviderHolder {
private static final DataProvider INSTANCE = new DataProvider();
}
public static DataProvider get() {
return DataProviderHolder.INSTANCE;
}
private DataProvider() {
}
public AbstractDataProvider tag(Object target) {
AbstractDataProvider provider = providerMap.get(target);
if (provider == null) {
provider = new DataProvider();
providerMap.put(target, provider);
}
return provider;
}
}
원본 코드, 주로 1, MVVM 2, RxJava 생명 관리 3, Retrofit 2차 동적 에이전트 4, 네트워크 요청 로컬 캐시
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.