2012-01-06 27 views
12

Czy ktoś może mi pomóc w zrozumieniu aktywności synchronicznej i asynchronicznej w systemie Android?Czynności synchroniczne i asynchroniczne

Co dokładnie oznacza aktywność synchroniczna i asynchroniczna w systemie Android?

StartActivity, StartSubActivity i StartAcivityForResult rozpocząć działanie synchronicznie lub asynchronicznie, czy też mogą zachowywać się w obie strony?

Proszę wyjaśnić, ponieważ przeszedłem wiele artykułów, ale nie mogłem znaleźć odpowiedniego wyjaśnienia na ten temat.

+0

@ Dinesh..Your pytanie jest takie same jak [link] http: // stackoverflow .com/questions/8613295/difference-between-synchronous-activities-ans-asynchronous-activities [link], a także odpowiedziałeś na ten post. Dlaczego więc zadajesz to samo pytanie. Co więcej, AFAIK startSubActivity nigdy nie jest publicznie dostępny, a jego funkcjonalność zapewnia startActivityForResult() – Maverick

+0

Dziękuję Raviemu za komentarz. Odpowiedziałem na to pytanie, ale nadal jestem trochę zmieszany z tą koncepcją. Więc chcesz być w 100% czysty. Jeśli masz nad tym jakiś pomysł, możesz podzielić się ze mną ... :) –

+1

"Czy ktoś może mi pomóc w wyjaśnieniu aktywności synchronicznej i asynchronicznej w systemie Android". - nie ma takiej koncepcji w systemie Android. – CommonsWare

Odpowiedz

17

Po pierwsze, tylko jedno działanie może być uruchomione jednocześnie na Androidzie, więc nigdy nie będziesz mieć dwóch uruchomionych jednocześnie działań. Użyj opcji startActivity(), gdy chcesz "odpalić i zapomnieć", to znaczy, że chcesz uruchomić działanie, ale nie spodziewasz się, że zwróci wartość Twojej aktywności. W takim przypadku rozpocznie się nowe działanie, a twoja aktywność zostanie wstrzymana; możesz w końcu odzyskać kontrolę po powrocie użytkownika do aktywności.

Użyj startActivityForResult(), gdy oczekujesz wyniku działania, które uruchamiasz. W takim przypadku działanie wywołujące powinno zastąpić onActivityResult(), które zostanie wywołane, gdy uruchomione działanie zostanie zakończone i ma wynik, który zostanie zwrócony do ciebie (który ustawia za pomocą setResult()).

W obu przypadkach, ponieważ aktywność wywołujący i wywoływany aktywność w tym samym zadania, to „synchroniczny” w pewnym sensie (chociaż myślę, że używając określenia „synchroniczny” i „asynchroniczny” może być mylące, w w tym kontekście). Czynność wywołująca nie pojawi się na ekranie, dopóki nie zakończy się wywołanie.

Przydatny odczytu wiedzieć więcej to: * http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

- Bruno Oliveira (Android Developer Relations, Google)

+1

Dziękuję Bruno za szybką odpowiedź. Ale mogę wyjaśnić mi, w jakim sensie używa się terminu "synchroniczny" i "asynchroniczny", jak widziałem w wielu miejscach tego typu pytanie ... –

+3

Synchroniczne oznacza, że ​​wykonanie nie będzie kontynuowane aż do zakończenia określonego zadania . Jeśli "startActivity" zadziałałby w ten sposób, cały interfejs zawiesiłby się, dopóki druga aktywność nie byłaby uruchomiona.Asynchroniczne oznacza, że ​​twoje zadanie zostanie wykonane gdzieś w przyszłości, a wykonanie będzie kontynuowane w międzyczasie: zażądasz rozpoczęcia działania, a Twój kod będzie nadal wykonywany, wiedząc, że w końcu to nastąpi. – slezica

+1

Odpowiedź nie dotyczy właściwie pytania. –

Powiązane problemy