活动没有最终确定?

Dav*_*Liu 4 android android-activity

是否有任何理由可能无法最终确定活动(即调用其finalize())并因此收集垃圾,即使它的onDestroy()被调用?这只是你平均每天的内存泄漏吗?

Ebo*_*ike 5

onDestroy并不意味着活动对象被删除,它只是意味着活动本身(作为Android概念)被销毁.这与实际的Activity对象无关.在内部,操作系统可能决定回收它,特别是当它由于配置改变而立即重建时(如从纵向到横向的方向变化).

即使它是垃圾收集(这可能发生在onDestroy之后很久,当系统实际上由于需要内存而实际上不得不进行垃圾收集时),也无法保证finalize被调用.它甚至在文档中:

"Note that the VM does guarantee that finalize() is called at most
once for any object, but it doesn't guarantee when (if at all)
finalize() will be called.".
Run Code Online (Sandbox Code Playgroud)

一般来说,finalize除非你真的需要,否则你永远不应该使用.它不像C++中的析构函数那样可预测.如果您需要在您的活动进行清理,这样做在onPauseonDestroy或任何其他挂钩.