安卓本身不支持内存分页交换技术,是通过回收activity的方式来回收内存的。.activity处于onPause或者onStop状态时,假如系统资源不足(内存不足),会被系统回收释放。

系统回收内存会存在两种行为:

1.当APP不在前台的时候,资源紧张,强杀APP进程并回收activity,这种情况不会调用生命周期的onDestroy方法。可以用“开发者选项”中的“限制后台进程数”来模拟这种情况。

2.当APP在前台,系统资源不足的时候,会回收APP处于pause或stop状态的Activity,这种情况不杀进程,但会调用onDestroy方法。可以用“开发者选项”中的“不保留活动”打开,来模拟这种情况。

因此,平时在onCreate方法里注册监听register,在onDestroy方法里反注册unregister不会有问题。因为假如是情况1,进程被杀掉了,不执行onDestroy方法也没事,进程都没了,就无所谓内存泄露的事。假如是情况2,那么会执行onDestroy方法反注册。

欢迎留言讨论,或指正问题。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐