Od pewnego czasu borykam się z moją strukturą aplikacji. I naprawdę wygląda na to, że ta struktura sprawia mi wiele bólu w rozwoju innych funkcji. Zanim przejdę dalej, chciałbym zasięgnąć porady i zobaczyć, czy robię coś złego tutaj.Przepływ aplikacji z AccountManager
Celem mojej aplikacji jest połączenie z serwerem, używam mechanizmu AccountManager do utworzenia konta na urządzeniu i przechowywania tokena, który ma służyć do żądania danych z serwera. Podczas tworzenia konta wszystko jest w porządku. (Działa także od ustawień urządzenia -> dodaj konto)
To idzie tak:
główną działalność jest działalnością, która, gdy uruchomisz aplikację, sprawdź czy masz konto. Jeśli masz konto, otrzymuję token w zmiennej statycznej, więc każdy fragment w MainActivity może uzyskać do niego dostęp. (Przypuszczalnie działa, ale nie) Inaczej, tworzę intencję z LoginActivity, aby utworzyć konto na urządzeniu. Problem polega na tym, że moje fragmenty nie mogą uzyskać tego tokena, ponieważ podczas odtwarzania tokena w wątku za pomocą obiektu AccountManager.getAuthToken() fragmenty są tworzone przed odzyskaniem tego tokenu. I dlatego nie mogę żądać danych z mojego serwera.
Które doprowadziło mnie do myślenia, że moja struktura aplikacji może nie być tak dobra. Tak więc myślałem: "A co jeśli tak zrobię?" :
- Użytkownik uruchamia aplikację
- główną działalność, które działają jak sprawdzić na konto i żeton, czy istnieje konto na urządzeniu, ale nie generują żadnego rodzaju widok jak w aktualnej wersji startowej.
- główną działalność albo przekierować do LoginActivity lub ContentActivity (nazwijmy to w ten sposób, działanie, które miało korzystać z tokena, aby wypełnić dane w moich ListViews)
ten sposób pozwala mi myśleć, że główną działalność będzie mieć token do przejść, ale nie jestem pewien, czy jest idealny pod względem UX. (Musisz poczekać na token przed uzyskaniem dostępu do zawartości). Jestem otwarty na każdą sugestię w tym momencie, ponieważ naprawdę utknąłem.
Dzięki!
Aktualizacja 1:
To raczej logowania/rejestracji aplikacji logiki niż obsługa AccountManager. Udało mi się sprawić, by działały, ale ja po prostu mam problem z konstrukcją logiki aplikacji "najlepsza praktyka", więc nie napotykam na wiele innych problemów z tego powodu (ponieważ tak naprawdę nie mam czasu). Potrzebuję tylko diagramu lub czegoś, co pokaże mi przykład "najlepszej praktyki", aby moja aplikacja działała w sposób opisany powyżej. Wystąpił również problem, ponieważ po uruchomieniu MainActivity sprawdza konto, a jeśli nie, uruchamia funkcję LoginActivity, ale jeśli cofnę, mogę zobaczyć MainActivity (unfilled).
miał spojrzeć na aplikację Last.fm, który jest w pełni open source i robi tego rodzaju wysyłek bezpośrednio do „login” aktywność. Sprawdza on wiele rzeczy (np. Działanie intencji), ponieważ ta czynność jest używana, gdy użytkownik pochodzi z ustawienia "dodaj konto", gdy użytkownik konfiguruje widżet aplikacji lub gdy tylko uruchamia aplikację. Czy uważasz, że to może być dobry sposób, aby to zrobić? (tutaj jest link kodu aktywności https://github.com/c99koder/lastfm-android/blob/master/app/src/fm/last/android/LastFm.java) Chcę również uniknąć SplashScreen, ponieważ Myślę, że to jest złe dla UX – CinetiK
To jest dobre. tak. Jeśli ktoś nalega, za wszystko można wykorzystać jedną czynność. –
Wielkie dzięki, naprawdę mi pomogłeś! Udało mi się sprawić, że teraz działa. – CinetiK