8

Mit anderen Worten:kann die von einem BroadcastReceiver empfangene Absicht jemals null sein?

@Override 
public void onReceive(Context context, Intent intent) { 
    final String action = intent.getAction(); // can intent==null here ? 
    // could it ever throw a NPE ? 
} 

Ich brauche dies einmal zu lösen und für alle so und nicht anders bitte. Ich würde nach Null suchen, aber ich vermute, dass es nicht benötigt wird und daher ist es plump und unelegant zu überprüfen. Ich in der Dokumentation gesucht hatte, aber noch nicht alles

EDIT gefunden: bei Google Groups gefragt - siehe there für einige interessante Punkte

+0

Upvoted. Ich bekomme Absturzberichte von Benutzern, die darauf hindeuten, dass die Absicht in seltenen Fällen definitiv null sein kann. –

Antwort

6

onReceive in einem BroadcastReceiver durch einen Intent mit einer Aktion ausgelöst wird, die es registriert ist. Ohne Absicht wäre also eine Instanz von Intent und nicht null, die onReceive Methode würde niemals aufgerufen werden.

Das gesagt, seltsame Dinge können passieren. Ich habe den Code nicht gelesen, den Google rund um Broadcasts geschrieben hat, also wäre es in der richtigen Verwendung niemals null, die Überprüfung wäre eine gute Idee, denn kommt von Code, den Sie nicht kontrollieren.

+0

Ich bin gerade über diese genaue Situation gestolpert. Meine App stürzte in 4.2.1 ab, als ich die SD-Karte aushängte und in Logcat gab es eine NPE innerhalb einer BroadcastReceiver.onReceive-Überschreibung. Ich könnte es leicht reproduzieren. Nachdem ich das Absichtsargument auf Null überprüft hatte, stoppte die App nicht mehr. – Yegor

+2

Könnten Sie Ihren 'onReceive' Code und den Logcat auch posten? Vielleicht in eine Pastebin hochladen. Wenn Sie die Zeilennummern im Code behalten könnten, die hilfreich wären. Ich bin neugierig darauf. – bclymer

Verwandte Themen