Thread objects not garbage collected after being finished

后端 未结 4 1807
遥遥无期
遥遥无期 2021-02-08 13:28

I noticed that my application is leaking memory. This can be seen in DDMS, and I managed to get a OutOfMemoryError.

I found the source of the leak. One of the activitie

4条回答
  •  太阳男子
    2021-02-08 13:57

    Activities are not destroyed when "back" is pressed or any other intent is sent to remove it from the top of the stack. I don't think your overriden onDestroy() method is ever called until your Android OS runs out of memory. From the documentation one can extract:

    As discussed in the following section about the activity lifecycle, the Android system manages the life of an activity for you, so you do not need to finish your own activities. Calling these methods could adversely affect the expected user experience and should only be used when you absolutely do not want the user to return to this instance of the activity.

    Normally, every Activity instance is laying around in memory after initial creation and goes through onStart()...onStop() cycle without being destroyed. Implement onStop() and call finish() in it for MainActivity with the Thread to be released and consequently garbage collected.

    UPDATE: The statement above is not true. Based on the code provided in the question, there is no reason the Activity should not be GC-ed.

提交回复
热议问题