在onResume()中,我这样做:
registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
在onPause()中:
unregisterReceiver(timeTickReceiver);
我在安卓开发者控制台看到"java.lang.IllegalArgumentException: Receiver not registered“报告(只有2个报告,而我的应用有成千上万的用户)。异常由unregisterReceiver()触发。可能会发生什么?我不是很有信心仅仅用try-catch来围绕它。
发布于 2013-06-01 18:15:27
广播接收器应在onPause()
生命周期方法中取消注册
protected void onPause() {
this.unregisterReceiver(reciever);
super.onPause();
}
发布于 2011-06-23 15:43:48
我猜可能在某些状态下,接收器在用户退出应用程序之前并未实际注册。
在运行unregister之前,您可能希望尝试为接收器添加检查(我在几种情况下都这样做过):
protected void onPause() {
if(timeTickReceiver != null) {
unregisterReceiver(timeTickReceiver);
}
}
发布于 2014-12-19 21:50:32
最简单的选择是将try/catch块包装在代码周围。
try{
...
this.unregisterReceiver(reciever);
}
catch(IllegalArgumentException e)
{
// TODO: handle exception
}
catch (Exception e) {
// TODO: handle exception
}
https://stackoverflow.com/questions/4978167
复制相似问题