2012-03-26 7 views
0

Ich habe ein Problem mit meinem BroadcastReceiver. Grundsätzlich habe ich eine Funktion in meinem Service, dass ich jeden, sagen wir, 2 Stunden anrufen möchte. Also habe ich den AlarmManager und den Broadcast-Empfänger benutzt, aber es sieht so aus, als würde der Empfänger niemals gerufen. Mein Code:Android - BroadcastReceiver nie von AlarmManager

in onCreate Methode Dienst:

Intent intent5 = new Intent("MYINTENT"); 
sender2 = PendingIntent.getBroadcast(this, 192838, intent5, PendingIntent.FLAG_UPDATE_CURRENT); 
am2 = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
am2.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*60*60*2, sender2); 

BroadcastReceiver connectionReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     check(); 
    } 
    }; 

    registerReceiver(connectionReceiver, new IntentFilter("MYINTENT")); 

und dann ist da noch die check() Methode

public static void check(){ 
    //some code 
} 

Ich habe auch versucht, eine Klasse Creat BroadcastReceiver erstreckt, es in der Registrierung Manifest usw., und es wurde aufgerufen, aber dann habe ich eine NullPointerException, die das check() -Methode des Dienstes vom BroadcastReceiver aus aufruft.

Antwort

0

Ich habe auch versucht, eine Klasse erweitern BroadcastReceiver creat, es im Manifest usw. Registrierung, und es wurde genannt, aber dann bekam ich einen Nullpointer der Service-Check() metheod aus dem BroadcastReceiver aufrufen.

Gehen Sie zurück zu dieser Lösung, dann beheben Sie Ihre NullPointerException. Wahrscheinlich hat Android den Prozess Ihrer App beendet, die registerReceiver() aufgerufen hat (z. B. hat Benutzer HOME gedrückt und ist nicht zum Prozess zurückgekehrt). check() - was auch immer das ist - muss davon ausgehen, dass es sich um einen brandneuen Prozess handelt. Ihr NullPointerException kommt wahrscheinlich von check() und denkt, dass etwas initialisiert werden sollte, wenn es nicht ist.

+0

Ja, das war tatsächlich eine bessere Lösung. Als ich schließlich die Ursache für diese Ausnahme fand, funktionierte es wie ein Zauber. Vielen Dank! – ThunderSS