2010-06-26 5 views

Antwort

37

Die Sendung ist die Benachrichtigung. :) Wenn Sie eine Aktivität, einen Dienst, etc. basierend auf einer empfangenen Übertragung starten möchten, benötigen Sie einen eigenständigen Broadcast-Empfänger, den Sie in Ihre Manifest-Datei einfügen. Wenn Sie jedoch möchten, dass Ihre Aktivität selbst auf Broadcasts reagiert, erstellen Sie in Ihrer Aktivität eine Instanz eines Broadcast-Empfängers und registrieren Sie sie dort.

Das Muster Ich benutze ist:

public class MyActivity extends Activity { 
    private BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(...) { 
      ... 
     } 
    }); 

    public void onResume() { 
     super.onResume(); 

     IntentFilter filter = new IntentFilter(); 
     filter.addAction(BROADCAST_ACTION); 

     this.registerReceiver(this.receiver, filter); 
    } 

    public void onPause() { 
     super.onPause(); 

     this.unregisterReceiver(this.receiver); 
    } 
} 

So, auf diese Weise der Empfänger instanziiert wird, wenn die Klasse erstellt wird (auch in onCreate tun könnte). Dann gehe ich in onResume/onPause mit dem An- und Abmelden des Receivers um. Dann in der onReceive Methode des Recievers mache ich alles, was notwendig ist, damit die Aktivität so reagiert, wie ich es möchte, wenn sie die Übertragung empfängt.

+9

Sie müssen also den Empfänger innerhalb der Aktivität definieren? Was ist, wenn Sie das Verhalten in Ihrer App möchten? – shim

+0

Weitere Klarstellung: 'String BROADCAST_ACTION =" android.net.conn.CONNECTIVITY_CHANGE ";' Auch Sie wollen ein Verhalten in Ihrer App, konnte nicht nehmen Sie Code in der Klasse "Anwendung" zu erweitern? – Sunshinator