Bortskaf abonnentens på Android

(10. jan. 2019)

RxJava og Android, glem alt om hukommelseslækage

Her på kontoret har vi flere projekter, der har brug for en opdatering, vi flytter til Java8, og vi bemærker, at vi har denne besked overalt:

Denne forfærdelige besked

Den korte forklaring er, at denne meddelelse vises, fordi Android Studio ikke ved, hvilke effekter dit abonnement kan have, når det ikke er bortskaffet, så det behandler det som usikkert. For eksempel kan din Single muligvis indeholde et netværksopkald, som kan forårsage hukommelseslækage, hvis din Activity opgives under udførelsen, et problem, vi kan løse.

En måde at løse vores problem på er at bruge CompositeDisposable , der giver en engangsbeholder, der kan holde på flere andre engangsartikler. Du skal tilføje alle dine Disposables til CompositeDisposable, når du er færdig med dit abonnement, skal du kalde metoden dispose()

Så lad os komme i gang, hvis du bruger MVP, vi har brug for at oprette en BaseActivity som alle vores aktiviteter vil udvide, vi har brug for en til Fragments, men magien vil ske på præsentanterne, selvfølgelig kan du bruge en CompositeDisposable hver gang, men du vil gentage dig selv meget, så dette går at være en mere bekvem måde at administrere en stor mængde på Disposable"s

Vi er nødt til at oprette en BaseActivity har brug for dem BaseFragment tjek dette link

BaseActivity

For præsentanten er tingene ens, men vi vil udvide en grænseflade, som vi skal skabe d nedenfor, i a BasePresenter skal vi oprette forekomsten af ​​ CompositeDisposable

På din almindelige aktivitet eller fragment skal du sørge for at indstille præsentanten

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

Endelig skal du oprette en variabel, når du ringer til din observerbare eller abonnent, og tilføje variablen ved hjælp af safeAdd() -metoden på grænsefladen:

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

}, {
//Error on logout

})
safeAdd(logoutDisposable)

Med dette skal du sørge for, at din abonnents ikke forårsager hukommelseslækage, og du vil bemærke bedre ydeevne i din app.

Hvis du har brug for hjælp , Jeg er altid glad for at hjælpe, du kan finde mig her:
Medium: (https://medium.com/@dinorahto)
StackOverflow: https : //stackoverflow.com/users/4613259/dinorah-tovar

Happy Coding! 👩🏻‍💻