Pracuję nad aplikacją dla systemu Android, w której muszę prosić o uprawnienia w czasie wykonywania. Zastanawiam się nad najlepszym sposobem wdrożenia tego przy użyciu architektury Model-View-Presenter.Jaki jest najlepszy sposób sprawdzania uprawnień w środowisku wykonawczym przy użyciu architektury MVP?
Moja początkowa myśl polegała na tym, aby prezenter zadzwonił do komponentu odpowiedzialnego za uprawnienia (powiedzmy PermissionHandler
) i odpowiednio zaktualizuj widok.
Problem polega na tym, że kod sprawdzający uprawnienia jest ściśle powiązany z klasą aktywności. Oto niektóre z metod związane, które wymagają aktywności lub okoliczności:
ContextCompat.checkSelfPermission()
ActivityCompat.shouldShowRequestPermissionRationale()
ActivityCompat.requestPermissions()
onRequestPermissionsResult()
(zwrotna)
Oznacza to, że trzeba przepuścić obiekt aktywności dla prezentera, który mi się nie podobał, bo słyszałem, że trzymanie prezentera wolnego od kodu Androida jest dobre dla testowania sol.
Z tego powodu, pomyślałem o obsłudze uprawnień na poziomie widoku (w działaniu), ale wtedy myślę, że zaszkodziłoby to celowi pozostawienia widoku odpowiedzialnego tylko za aktualizacje interfejsu, bez logiki biznesowej.
Nie jestem pewien, jaki byłby najlepszy sposób rozwiązania tego problemu, utrzymując kod jako odłączony i możliwy do utrzymania. Jakieś pomysły?
Czy to podejście będzie bezpieczne? Czy nie powinien generować wycieku pamięci? – fobo66