I'm wondering why the Motorola Milestone with 2.1-update1 behaves differently from the Emulator or e.g. the Nexus One. I am trying to exit my app with:
@Override
protected void onPause() {
if(mayDestroyActivity) this.finish();
super.onPause();
}
This works well on either Emulator or Nexus One. onDestroy()
gets called immediatly after onPause()
and onStop
. But not for the Milestone. Instead, onDestroy()
gets called when another Activity is started. Its section in the Manifest looks like this:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/questionnaire_item"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<category android:name="android.intent.category.OPENABLE" />
</intent-filter>
</activity>
Does anyone have a hint on this? My app depends on exiting properly since I save all progress in onDestroy()
Thanks,
Steff
You should use
onSaveInstanceState
, check this link.You are doing it wrong. This is what the Doc says:
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
If the user exits to the home screen this does not need to mean that the app should be exited. In most of the time it will give a better user experience if the app just goes to the background. Try to rely on saveInstanceState and onPause.
Exiting a app is seen as bad practice in the android world, featuring a phone with a good system for true multitouch can get better user experience if the app keeps running after pressing the home screen.