2016-05-21 15 views
0

Meine Android-Klasseninstanz hört den Drittanbieterdienst für das Ereignis ab. Dann kommt das Ereignis heraus, ich muss meine Aktivität darüber bemerken. Was ist der richtige Weg? Ich weiß über startActivity() -Methode, aber meine Aktivität läuft noch!Übergeben Sie Daten von der Anwendung an die Aktivität

+0

Sprechen Sie über Sendungen? Wenn ja, überprüfen Sie dies. https://developer.android.com/reference/android/content/BroadcastReceiver.html –

Antwort

1

Verwenden Sie lokale Broadcast-Ereignisse mit LocalBroadcastManager - siehe hierzu tutorial für weitere Informationen.

Ich habe relevante Codebits aus dem obigen Tutorial für Ihre Bequemlichkeit kopiert.

Um Ihre bereits laufenden Aktivitäten zu Ihrer Veranstaltung, versuchen Sie Folgendes mitteilen:

  1. eine Broadcast-Absicht von Ihrer Anwendungsklasse senden, wenn Sie das Ereignis empfangen.

    Intent intent = new Intent("my-event"); 
    // add data 
    intent.putExtra("message", "data"); 
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 
    
  2. eine BroadcastReceiver in Registrieren Sie Ihre Aktivitäten, die die empfangenen Intents für Ihre Veranstaltung behandelt. Fügen Sie den folgenden Code in Ihre Aktivität:

    @Override 
    public void onResume() { 
        super.onResume(); 
    
        // Register mMessageReceiver to receive messages. 
        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, 
        new IntentFilter("my-event")); 
    } 
    
    // handler for received Intents for the "my-event" event 
    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
        @Override 
        public void onReceive(Context context, Intent intent) { 
        // Extract data included in the Intent 
        String message = intent.getStringExtra("message"); 
        Log.d("receiver", "Got message: " + message); 
        } 
    }; 
    
    @Override 
    protected void onPause() { 
        // Unregister since the activity is not visible 
        LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver); 
        super.onPause(); 
    } 
    
+0

Das ist, was ich brauche! Vielen Dank! – Scit

1

Wenn die Kommunikation für Ihre App lokal ist, können Sie local broadcasts verwenden. Für die Kommunikation zwischen Komponenten können Sie auch EventBus (Android-Bibliothek) verwenden. Es ist wirklich einfach zu bedienen und zu implementieren (dauert weniger als eine Minute, um zu verstehen, wie es funktioniert) und ist in der Leistung groß.

Verwandte Themen