In my application, when I press the home button the activity is going to onDestroy()
. It suppose to be called onPause()
method only right?
Why it is happening so?
In my application, when I press the home button the activity is going to onDestroy()
. It suppose to be called onPause()
method only right?
Why it is happening so?
It depends on how much memory your phone has, if your phone does not have very much memory, then it will destroy the activity to free up resources immediately. On new phones, this will not happen because they have plenty of spare memory.
also check that you don't use the android:noHistory flag in your manifest for the Activity
documentation: android:noHistory Whether or not the activity should be removed from the activity stack and finished (its finish() method called) when the user navigates away from it and it's no longer visible on screen
noHistory="true"
doesn't call finish()
. I checked with printing isFinishing
in onPause
and onStop
, but both of them showed false
. Is finish()
not called? –
Brecciate It depends on how much memory your phone has, if your phone does not have very much memory, then it will destroy the activity to free up resources immediately. On new phones, this will not happen because they have plenty of spare memory.
You activity could be destroyed upon pressing the home button if the system is constrained and has determined it needs to free some resources. The documentation states that onDestroy()
can be called if:
This can happen either because the activity is finishing (someone called finish() on it, or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenarios with the isFinishing() method.
Additionally, do note that the system can kill
your program without calling onDestroy()
after onStop()
has been called. Therefore, any cleanup/data persistence code should be in either onPause()
or onStop()
.
Well, it depends on a lot of factors. If you are facing this issue on Android 3.2+ devices, you should add screenSize property to android:configChanges
android:configChanges="keyboardHidden|orientation|screenSize"
Besides, also add android:launchMode="singleTop" to your launcher activity. Do note that you'd need to use Android SDK 15 or above as target, however, your app will work on older devices as well. Hope this helps.
another thing to check is whether your activity call finish()
when onPause()
Of course may be memory problems, but before that check the manifest file, in the declaration of the activity, if you have "no history" declared (you don't want the activity to remain in the activity stack. Also you may using some flag when you create the activity with an intent. Then, most probable answer is the one given by Alex Contour.
© 2022 - 2024 — McMap. All rights reserved.
Don't keep activities
andBackground process limit
set to standard limit. IfDon't keep activities
is checked, the state of Activities are not kept so when you leave an Activity it is destroyed. Enjoy! – Obaraandroid:noHistory
defaults tofalse
– LonghandnoHistory="true"
doesn't callfinish()
. I checked with printingisFinishing
inonPause
andonStop
, but both of them showedfalse
. Did I check incorrectly? – Brecciate