Szukam poradnika/receptury z androidplotem oraz usługą

Szukam poradnika/receptury z androidplotem oraz usługą
GarryMoveOut
  • Rejestracja:około 11 lat
  • Ostatnio:2 miesiące
  • Postów:59
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.

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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ąć...


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
GarryMoveOut
Usługa u mnie nie rysuje ona działa w tle i zwraca wartości liczbowe do UI tak jak to napisałem. Mam wątek w usłudze, nie unikam tego.
Haskell
W takim razie nie rozumiem pytania. Po co szukasz przykładu z usługą, jeżeli nie używasz jej do rysowania. Powinieneś raczej nauczyć się jak przekazywać dane między usługą, a wątkiem głównym, a w następnej kolejności skorzystać z przykładu wykorzystującego wątek.
panryz
  • Rejestracja:prawie 17 lat
  • Ostatnio:14 minut
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...

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 2x, ostatnio: Haskell
panryz
  • Rejestracja:prawie 17 lat
  • Ostatnio:14 minut
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.

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 2x, ostatnio: Haskell
panryz
  • Rejestracja:prawie 17 lat
  • Ostatnio:14 minut
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.

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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...


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 2x, ostatnio: Haskell
Zobacz pozostałe 3 komentarze
Haskell
Masz zwykły ból dupska, ponieważ chciałeś mi wytknąć błąd, a okazuje się, że sam nie masz racji.
panryz
Przecież o tym piszę, że dane przygotować w serwisie, a rysować w UI... Service nie tworzy wątku, ale IntentService go tworzy i jest Servicem bo może działać w tle. Jak nie umiesz nad nim zapanować to nie jest moja wina. Ja o dupie Ty o zupie. (Intent)Service może działać w tle i może tworzyć nowy wątek. Service nie!
Haskell
Przecież ja napisałem wyraźnie usługa i w nawiasie "service". Nie pisałem o IntentService. OMG!!! Poza tym serio poczytaj sobie czym się różni IntentService od Service i kiedy się go stosuje, ponieważ tego nie wiesz. Jak pisałem o rysowaniu, to pisałem o rysowaniu, a nie o przygotowywaniu danych do rysowania. Naucz się czytać, zamiast wywoływać gównoburzę bez powodu.
panryz
Ja tylko rzuciłem inne światło na rysownie i zanegowałem to że service nie odpala się w nowym wątku. Owszem odpala się pod warunkiem że jest to IntentService, który nota bene jest też zwykłym servicem.
Haskell
Nie rzuciłeś żadnego "innego światła", tylko próbujesz wywołać gównoburzę o znaczenie słowa "rysowanie" oraz próbujesz mi wmówić, że jak napisałem jak byk "service" to pisałem o "intentservice". Nie rozumiem z resztą w jakim celu robisz tę gównoburzę. Mam nadzieję, że przynajmniej dobrze się bawisz, bo ja mam dość. EOT.
bolson
  • Rejestracja:około 15 lat
  • Ostatnio:3 dni
  • Lokalizacja:Zielona Góra/Poznań
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?

edytowany 1x, ostatnio: bolson
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)