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)
@ 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
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ą ... :) –
"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