Contradiction in Activity lifecycle diagram versus description of lifecycle
我不清楚操作系统"破坏"某项活动时的情况。
让我解释一下原因 - 在此处的活动生命周期图表中:http://developer.android.com/reference/android/app/Activity.html
有一个箭头直接从onStop()转到'App process killed'然后是一个箭头从'App process killed'到OnCreate()。
因此,该图表明,如果操作系统由于内存限制等而导致活动被杀死,则不会调用onDestroy()。
然而,在生命周期的描述中,"destroy"这个词被多次使用。例如,此页面的以下引用:http://developer.android.com/training/basics/activity-lifecycle/recreating.html
The system may also destroy your activity if it's currently stopped
and hasn't been used in a long time or the foreground activity
requires more resources so the system must shut down background
processes to recover memory.
因此,文档说该活动在图中箭头从onStop()到onCreate()并绕过onDestroy()被销毁。这就是我感到困惑的原因,因为它显然是一个矛盾。
如果我有一个在onCreate()方法中创建一些对象的活动,并且我在onDestroy()中将它们设置为null,但是如果应用程序从onStop()移动到onCreate(),则不会调用onDestroy(),那么我不会内存泄漏,因为它们将在onCreate()中再次创建?
我无法在onStop()中将它们设置为null,因为如果生命周期从onStop()移动到onRestart()到onStart(),它们将为null。
因此,为了处理生命周期图中的所有路径,如何处理在活动中创建和销毁子对象的正确顺序?
在onCreate()中是否有必要仅在它们为null时才创建对象而不是其他?
This diagram therefore shows that onDestroy() is NOT called if the OS kills the activity due to memory constraints etc.
有问题的箭头标有"优先级较高的应用程序需要内存"。因此,此图表显示,如果操作系统终止进程,则不会调用
If I have an activity which creates some objects in its onCreate() method and I set them to null in onDestroy() but onDestroy() is not called if the app moves from onStop() to onCreate() then won't I have a memory leak as they will get created again in onCreate()?
不,因为"如果应用程序从
Therefore how does one deal with the correct sequence of creating and destroying of child objects within an activity in order to deal with all paths in the lifecycle diagram?
应该在
对于那些你确定应该在
您可以使用
您的流程已终止,在这种情况下,您的清理工作将不再需要或可能
你崩溃了一个未处理的异常,在这种情况下Android不能保证再调用生命周期方法(这个故事的道德:使用好的异常处理程序)