Wstrzykiwanie serwisu/usługi do aktywności/fragmentu

0

Cześć,

Dopiero zaczynam z Androidem Native, natomiast miałem dotychczas pewne doświadczenie z Xamarinem.
Moja aplikacja potrzebuje mieć serwis który działa w tle (foreground service) tak aby nie został zamknięty przez androida > 8 - ma byc cały czas widoczne powiadomienie że serwis działa.
Serwis (zdefiniowany w mojej aplikacji) jest startowany przy inicjalizacji głównej aktywność (tj pierwszy start aplikacji) i ma działać w tle tak długo jak się da. Natomiast w samej aplikacji potrzebuję odnosić się dość często do niego więc najlepiej gdyby można było odniesienie do niego wstrzykiwać daggerem do fragmentów (1 aktywność i wiele fragmentów) . W jaki sposób najlepiej osiągnac taki efekt ? Niestety na razie mam zerowe pojęcie o konfiguracji daggera.

Ogólnie idea jest taka że ten serwis działa w tle cały czas podtrzymując komunikację (Web Socket) natomiast użytkownik może przełączać się między innymi aplikacjami. Priorytetowe jest to żeby apka była cały czas połączona z serwerem - to aplikacja wewnętrzna więc użytkownicy wiedzą że tak ma być.

Pozdrawiam

0

Zależy co tam chcesz przekazywac w tej komunikacji. Mozesz to zrobic bez Daggera i do komunikacji wykorzystac tylko, na przyklad, LocalBroadcastManager-a

0

Jeżeli chcesz coś przekazywać do fragmentów, aktywności i mieć cały czas na to podgląd, proponuję skorzystać z RxJavy ( czy czegoś tam).

Tworzysz sobie obiekt który będzie miał 2 metody (lub więcej w zależności co Ci tam potrzebne)


data class DataToPost(val aa:BB)
interface PostDataPoster{
fun postData(dataToPost:DataToPost)
}

interface PostDataListener{
fun registrerToStream():Flowable<DataToPost>
}

interface PostDataManager:PostDataPoster,PostDataListener

class PostDataManagerImp:PostDataManager{
private val processor: PublishProcessor<DataToPost>  =  PublishProcessor.create()

fun postData(dataToPost:DataToPost){
processor.onNext(dataToPost)
}
fun registrerToStream():Flowable<DataToPost> =  processor
}

I taką klasę wstrzykujesz se w serwiesie i tam gdzie potrzebujesz.

W serwisie to zasilasz,
we fragemntach/aktywnościach zczytujesz

voila ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1