Szukam poradnika/receptury z androidplotem oraz usługą

0

Tworzę aplikację i mam w niej usługę która zwraca wartości do UI po handler. Teraz chcę stworzyć wykresy które będą rysowały te wartości na bieżąco w trakcie działania aplikacji. Szukałem jakiegoś poradnika albo chociaż jakiegoś kodu gdzie może ktoś napisał już takie coś. Po raz pierwszy tworze wykres w aplikacji a co dopiero żeby się jeszcze na bieżąco rysował. Większość wykresów opartych jest na wątku który wyrzuca jakieś wartości, a mi jest bardziej potrzebny przykład z usługą działającą w tle.

0

Po pierwsze do rysowania wykresu powinno zastosować się wątek, a nie usługę (service). Usługi są przeznaczone dla długich operacji wykonywanych w tle, bez interakcji z użytkownikiem. Po drugie usługa nie tworzy sobie osobnego wątku tylko domyślnie działa na wątku głównym (main thread). W związku z tym dla usługi i tak powinieneś stworzyć nowy wątek, którego tak bardzo chcesz uniknąć...

0

@Haskell

Haskell napisał(a):

Usługi są przeznaczone dla długich operacji wykonywanych w tle, bez interakcji z użytkownikiem.

A co jeśli rysowanie wykresu jest czasochłonne i zasobożerne? Może jednak warto pomyśleć o pracy w tle plus komunikować się z UI za pomocą IBind?

Haskell napisał(a):

Po drugie usługa nie tworzy sobie osobnego wątku tylko domyślnie działa na wątku głównym (main thread).W związku z tym dla usługi i tak powinieneś stworzyć nowy wątek, którego tak bardzo chcesz uniknąć...

Bzdura totalna. IntentService odpalany jest w nowym wątku...

0
panryz napisał(a):

A co jeśli rysowanie wykresu jest czasochłonne i zasobożerne? Może jednak warto pomyśleć o pracy w tle plus komunikować się z UI za pomocą IBind?

To są bzdurne argumenty z d**y... Czuję gównoburzę. Operacje czasochłonne i zasobożerne uruchamia się w nowym wątku lub w usłudze. Jednak usługi stosuje się do operacji wykonywanych w tle, które są wykonywane w tle bez interakcji z interfejsem użytkownika - tak nakazuje dokumentacja. Rysowanie wykresu na UI nie spełnia tego warunku... Zrozumiałbym użycie usługi do przygotowywania rysunku, który później zostanie pokazany, w innym wypadku nie ma żadnych argumentów za tym, żeby zastosować usługę. Poza tym jest to wbrew sztuce i wbrew dokumentacji.

panryz napisał(a):

Bzdura totalna. IntentService odpalany jest w nowym wątku...

Service i IntentService to dwie różne klasy, ale żeby to wiedzieć to trzeba chociaż raz zajrzeć do dokumentacji.

0

Co powiesz na czytanie lokalizacji usera z GPS (w serwisie) i rysowanie drogi na mapie (UI)? A do komunikacji Serwisu - Activity służy właśnie interfejs IBind.

IntentService rozszerza Service, a rożnica jest taka że on przy uruchamianiu tworzy nowy wątek.

0
panryz napisał(a):

Co powiesz na czytanie lokalizacji usera z GPS (w serwisie) i rysowanie drogi na mapie (UI)? A do komunikacji Serwisu - Activity służy właśnie interfejs IBind.

To już są dwie operacje, a nawet więcej. Pierwsza to czytanie lokalizacji, kolejna to ściąganie mapy, dopiero ostatnia i najmniej zasobożerna to rysowanie. Dwie pierwsze operacje są zasobożerne i nie wymagają interakcji z interfejsem użytkownika, zatem można je uruchomić w usłudze. Poza tym nawigacja w telefonie ma działać przez dłuższy czas podróży, podczas którego użytkownik może chcieć robić inne rzeczy np. odbierać połączenia, pisać sms czy korzystać z Intrnetu, zatem te dwie pierwsze operacje nie tylko można, ale powinno się uruchomić w serwisie. Rysownie nie ma z tym nic wspólnego. Nie chcemy żeby mapa była rysowana gdy user ma zminimalizowaną nawigację, ale chcemy żeby nawigacja czytała pozycję GPS i odtwarzała komunikaty "skręć w prawo" gdy jest zminimalizowana.

panryz napisał(a):

IntentService rozszerza Service, a rożnica jest taka że on przy uruchamianiu tworzy nowy wątek.

To co napisałeś, to nie jedyna różnica między Service i IntentService, jest ich więcej.

0

Prawda co napisałeś o GPS, ale wyobraź sobie że ktoś przetwarza dane z serwera o indeksach giełdy i potrzebuje je obrabiać cały czas po to że gdy ktoś otworzy activity to będzie już miał dane gotowe. Albo co innego ma widget. OOOO i tu jest beret bo jak to widget pobiera dane? Obrabia? I jeszcze updateduje widok? No niesłychane.

To co napisałeś, to nie jedyna różnica między Service i IntentService, jest ich więcej.

Lol, ale ta różnica jest najistotniejsza w tym wątku bo jak wspomniałeś w pierwszym poście Po drugie usługa nie tworzy sobie osobnego wątku tylko domyślnie działa na wątku głównym jest nie prawdą. I to już jest kolejny raz kiedy próbujesz pomóc w Androidzie a piszesz brednie. Co gorsza łapią Cie na tym ludzie, a Ty tego nie przyjmujesz do wiadomości.

0
panryz napisał(a):

Prawda co napisałeś o GPS, ale wyobraź sobie że ktoś przetwarza dane z serwera o indeksach giełdy i potrzebuje je obrabiać cały czas po to że gdy ktoś otworzy activity to będzie już miał dane gotowe. Albo co innego ma widget. OOOO i tu jest beret bo jak to widget pobiera dane? Obrabia? I jeszcze updateduje widok? No niesłychane.

Tylko co to ma wspólnego z rysowaniem Januszu Androida? Poczytaj sobie dokumentację, bo jak widzę masz braki.

panryz napisał(a):

I to już jest kolejny raz kiedy próbujesz pomóc w Androidzie a piszesz brednie. Co gorsza łapią Cie na tym ludzie, a Ty tego nie przyjmujesz do wiadomości.

Jesteś małym i zawistnym człowieczkiem z bólem dupska, który chce wywołać gównoburzę i próbuje mi wmówić, że piszę bzdury i się nie znam, tymczasem miałem rację - klasa Service nie tworzy wątku...

0
GarryMoveOut napisał(a):

Tworzę aplikację i mam w niej usługę która zwraca wartości do UI po handler. Teraz chcę stworzyć wykresy które będą rysowały te wartości na bieżąco w trakcie działania aplikacji. Szukałem jakiegoś poradnika albo chociaż jakiegoś kodu gdzie może ktoś napisał już takie coś. Po raz pierwszy tworze wykres w aplikacji a co dopiero żeby się jeszcze na bieżąco rysował. Większość wykresów opartych jest na wątku który wyrzuca jakieś wartości, a mi jest bardziej potrzebny przykład z usługą działającą w tle.

Ale w czym problem? Skoro twój service i tak pluje wartościami do UI to jaki problem je na bieżąco dodawać do wykresu i wyświetlać? Nie wiesz jak rysować wykres czy jak komunikować się pomiędzy usługą a wykresem?

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