2012-03-26 9 views
0

BroadcastReceiverに問題があります。基本的に、私は私のサービスの中で、私が毎週電話したいと思う機能を持っています。言い換えれば、2時間です。そこで私はAlarmManagerとBroadcastレシーバを使っていましたが、レシーバが決して呼び出されないようです。私のコード:Android - BroadcastReceiverはAlarmManagerから呼び出されません

サービスののonCreateメソッド内:

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")); 

、その後、チェックがあります()メソッド

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

は、私もそれを登録し、BroadcastReceiverを拡張するクラスをクリートしようとしましたマニフェストなど、呼び出されたが、BroadcastReceiver内からサービスのcheck()メテオードを呼び出すNullPointerExceptionが発生した。

答えて

0

私はまた、マニフェストなどでそれを登録し、BroadcastReceiverを拡張するクラスをクリートしようとしました、そしてそれが呼ばれるが、その後、私はBroadcastReceiverの中から、サービスのチェック()metheodを呼び出すとNullPointerExceptionを得ました。

その解決策に戻り、NullPointerExceptionを修正してください。ほとんどの場合、AndroidはregisterReceiver()という名前のアプリのプロセスを終了しました(ユーザーがHOMEを押してプロセスに戻っていないなど)。 check() - これが何であれ、これはまったく新しいプロセスであると仮定しなければなりません。あなたのNullPointerExceptionはおそらくcheck()から来ています。

+0

ええ、それは実際には本当に良い解決策でした。私はその例外の原因をついに見つけたとき、それは魅力のように働いた。ありがとう! – ThunderSS