活动泄漏了最初在这里注册的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(); }