Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MainActivity已泄漏IntentReceiver_Android_Broadcastreceiver - Fatal编程技术网

Android MainActivity已泄漏IntentReceiver

Android MainActivity已泄漏IntentReceiver,android,broadcastreceiver,Android,Broadcastreceiver,当我以编程方式注册BroadcastReceiver时,LogCat中出现以下错误。我知道我没有在活动中注销我的广播接收器 但当我通过清单注册时,我没有收到这个错误。为什么 还有,MainActivity泄露了IntentReceiver?这意味着什么。它会在内存中产生任何问题 如果我没有注销我的广播接收器,会发生什么糟糕的事情 10-06 18:09:38.057: E/ActivityThread(15435): Activity com.collabera.labs.sai.Mai

当我以编程方式注册BroadcastReceiver时,LogCat中出现以下错误。我知道我没有在活动中注销我的广播接收器

但当我通过清单注册时,我没有收到这个错误。为什么

还有,MainActivity泄露了IntentReceiver?这意味着什么。它会在内存中产生任何问题

如果我没有注销我的广播接收器,会发生什么糟糕的事情

    10-06 18:09:38.057: E/ActivityThread(15435): Activity com.collabera.labs.sai.MainActivity

 has leaked IntentReceiver com.collabera.labs.sai.MyBroadcastReceiver@41c8bc68 that was 

originally registered here. Are you missing a call to unregisterReceiver()?

当一个对象存储在内存中但由于指向该对象的指针被删除而无法访问时,就会发生内存泄漏。它会降低性能,因为它会占用内存,在最坏的情况下,系统会崩溃

由于Android运行的是i-Java,垃圾收集器应该处理它,但当然最好正确地处理它,而不是将它留给GC

以下是有关内存泄漏的一些信息:


您是否在未取消订阅BroadcastReceiver的情况下停止活动?检查Android活动生命周期是的。我故意停止了我的活动而没有取消订阅广播接收器。我想知道如果我没有注销,除了在LogCat中得到错误之外,会发生什么糟糕的事情。“因为指向对象的指针被删除了”。如果没有指向对象的指针(引用)。它将有资格进行垃圾收集。所以我们是安全的,对吗?不。IntentReceiver注册在某个地方,它将有一个指向该对象的指针。是的,在这种情况下它注册到Mainactivity,但当它被销毁时,指针也将被销毁。