活动泄漏了最初在这里注册的IntentReceiver。 你是否错过了对unregisterReceiver()的调用?
01-16 16:52:42.211: E/ActivityThread(2529): Activity com.Civilcourage.CivilcurageSplash has leaked IntentReceiver com.google.android.gcm.GCMBroadcastReceiver@405282e0 that was originally registered here. Are you missing a call to unregisterReceiver()?
上述错误的原因是什么? 如何避免?
您需要取消注册您的接收器停止您的活动:
@Override protected void onStop() { unregisterReceiver(yourReceiver); super.onStop(); }
不要依赖onStop() , 因为 :
请注意,在内存不足的情况下,可能永远不会调用此方法,因为在系统没有足够内存的情况下,会在调用onPause()方法后继续运行活动的进程
更多关于活动生命周期在这里 。
在onPause()中取消注册您的接收器:
@Override protected void onPause() { super.onPause(); unregisterReceiver(yourReceiver); }
只要收到广播接收器,就可以取消注册
@Override public void onReceive(Context context, Intent intent) { getActivity().unregisterReceiver(this);
在onStop()上取消注册您的接收器是有效的答案。 不要在onPause()方法上调用它。
@Override protected void onStop() { unregisterReceiver(yourReceiverName); super.onStop(); }
- Google Play中是否有“Feature Graphic”生成器?
- Android Studio找不到与com.android.support:appcompat-v7:+相匹配的任何版本
- 从代码获取androidManifest的“debuggable”值?
- 如何使用PhoneNumberUtils格式化电话号码?
- 带有“完成”操作button的多行EditText
- Android Studio:Gradle Refresh失败 – 找不到com.android.tools.build:gradle:2.2.0-alpha6
- canvas.translate是做什么的?
- Android:Activity.runOnUiThread和View.post有什么区别?
- Android:如何防止任何触摸事件从视图传递到下面的一个?