Android에서 구독자 삭제

(2019 년 1 월 10 일)

RxJava 및 Android, 메모리 누수는 잊어 버리세요

여기 사무실에는 다음과 같은 여러 프로젝트가 있습니다. 업데이트가 필요한 경우 Java8로 이동하면 다음 메시지가 모든 곳에 표시됩니다.

이 끔찍한 메시지

짧은 설명은이 메시지가 표시된다는 것입니다. Android Studio는 구독이 폐기되지 않았을 때 어떤 영향을 미칠 수 있는지 알지 못하기 때문입니다. 그래서 안전하지 않은 것으로 취급합니다. 예를 들어 Single에 네트워크 호출이 포함되어있을 수 있습니다.이 호출은 실행 중에 Activity가 중단 된 경우 메모리 누수를 일으킬 수 있습니다. 우리가 해결할 수있는 문제입니다.

문제를 해결하는 방법은 다른 여러 개를 담을 수있는 일회용 용기를 제공하는 CompositeDisposable 을 사용하는 것입니다. 일회용품. 모든 Disposable을 CompositeDisposable에 추가해야합니다. 구독이 끝나면 dispose()

메소드를 호출해야합니다. MVP를 사용하고있는 경우 모든 활동이 확장 될 BaseActivity를 만들어야합니다. Fragments에도 하나가 필요합니다. 발표자에게 마술이 일어날 것입니다. 물론 매번 CompositeDisposable 을 사용할 수 있지만 자신을 많이 반복 할 것입니다. 많은 양의 Disposable"s

BaseActivity를 생성해야합니다. BaseFragment 이 링크

를 확인하세요.

BaseActivity

발표자의 경우 상황이 비슷하지만 만들려는 인터페이스를 확장 할 것입니다. d 아래의 a BasePresenter에서 CompositeDisposable

일반 활동 또는 프래그먼트에서 발표자를 설정해야합니다.

presenter = YourPresenter(yourRepository, yourActivityInterface)
setPresenter(presenter)

마지막으로 Observable 또는 Subscriber를 호출 할 때 변수를 생성하고 인터페이스에서 safeAdd() 메소드를 사용하여 변수를 추가해야합니다.

val logoutDisposable = yourRepository.logout().subscribe({
//Succesful logout

}, {
//Error on logout

})
safeAdd(logoutDisposable)

이를 통해 구독자가 메모리 누수를 일으키지 않는지 확인하고 앱에서 더 나은 성능을 확인할 수 있습니다.

도움이 필요한 경우 , 항상 기꺼이 도와 드리겠습니다. 여기에서 저를 찾을 수 있습니다.
매체 : (https://medium.com/@dinorahto)
StackOverflow : https : //stackoverflow.com/users/4613259/dinorah-tovar

행복한 코딩! 👩🏻‍💻