2013-09-07 10 views
18

Mam BroadcastReceiver, który uruchamia HomeActivity z pewnymi informacjami przekazanymi z dodatkami.Jak przesłać zamiar z dodatkami do już działającej działalności

Co się stanie, gdy działanie już się uruchomi i odbiornik telewizyjny ponownie się wyzwoli, a następnie spróbuje uruchomić nowe urządzenie o numerze HomeActivity. Czy wykonywana jest aktywność OnResume() lub OnCreate()?

Jeśli nie, czy istnieje inny sposób przekazywania/ponownego ładowania bieżącej działalności po uruchomieniu BroadcastReceiver?

+1

Być może to odpowiedź na Twoje pytanie: http://stackoverflow.com/questions/10143222/send-data-to-another-activity-that-may-be-started (musisz przesłonić naNewIntent()). Nie jestem jednak pewien. – ujvl

+1

Potrzebujesz "interfejsu". Zdefiniuj wywołanie zwrotne. – Simon

Odpowiedz

27

Upewnij się, że podczas uruchamiania intencji z BroadcastReceiver ustawiłeś flagę FLAG_ACTIVITY_SINGLE_TOP.

intent.addFlags (FLAG_ACTIVITY_SINGLE_TOP); 

... 


class HomeActivity extends Activity { 
    ... 
    @Override 
    protected void onNewIntent(Intent intent) { 
     Bundle extras = intent.getExtras(); 
    } 
    ... 
} 
3

Wystarczy rozszerzenie odpowiedź Cory Roya trzeba zdefiniować „SingleTop” w AndroidManifest.xml też.

<activity 
     android:name="MainActivity"    
     android:launchMode="singleTop" 

Wydaje się, że rozszerzenie android.support.v7.app.ActionBarActivity ta metoda nie działa ...

+1

to nie wydaje się konieczne! Oznacza to, że domyślny tryb uruchamiania to "singleTop". możesz tego nie chcieć i tylko dla powiadomień – Boy

+1

Warto zauważyć, że launchMode musi być ustawiony tylko w manifeście lub przez addFlags() z intencji wywołania, a nie jednocześnie. – Cody

Powiązane problemy