我的BroadcastReceiver出了问题。基本上,我在我的服务中有一个功能,我想打电话给每个人,比方说,2个小时。所以我使用了AlarmManager和Broadcast接收器来做这件事,但是看起来接收器从未被调用过。我的代码:
在service的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"));
然后是check()方法
public static void check(){
//some code
}
我还尝试创建一个扩展BroadcastReceiver的类,在Manifest等中注册它,然后调用它,但后来我得到一个NullPointerException,从BroadcastReceiver中调用服务的check()方法。
答案 0 :(得分:0)
我还尝试创建一个扩展BroadcastReceiver的类,在Manifest等中注册它,然后调用它,但后来我得到一个NullPointerException,从BroadcastReceiver中调用服务的check()方法。
返回该解决方案,然后修复NullPointerException
。最有可能的是,Android终止了您的应用程序调用{{1}}的过程(例如,用户按下了HOME并且没有返回到该过程)。 registerReceiver()
- 不管是什么 - 必须假设这是一个全新的过程。您的check()
可能来自NullPointerException
,认为应该初始化某些内容,而不是。