我想知道为什么具有2.1-update1的摩托罗拉里程碑与仿真器的行为不同或者例如Nexus One。我正试图退出我的应用程序:
@Override
protected void onPause() {
if(mayDestroyActivity) this.finish();
super.onPause();
}
这适用于模拟器或Nexus One。在onDestroy()
和onPause()
之后立即调用onStop
。但不是里程碑。而是在启动另一个Activity时调用onDestroy()
。它在Manifest中的部分看起来像这样:
<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>
有人对此有暗示吗?我的应用程序依赖于正确退出,因为我保存了onDestroy()
谢谢,
Steff
答案 0 :(得分:5)
你做错了。这就是Doc所说的:
注意:不要指望这种方法 被称为储蓄的地方 数据! [...]有些情况 系统将简单地杀死 活动的托管过程没有 在中调用此方法(或任何其他方法) 它,所以它不应该被用来做 那些打算留下的东西 在这个过程消失之后。
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
答案 1 :(得分:2)
您应该使用onSaveInstanceState
,查看this链接。
答案 2 :(得分:2)
如果用户退出主屏幕,则无需表示应退出应用程序。在大多数情况下,如果应用程序转到后台,它将提供更好的用户体验。尝试依赖saveInstanceState和onPause。
退出应用程序在Android世界中被认为是不好的做法,如果应用程序在按下主屏幕后继续运行,那么具有良好系统的真正多点触控的手机可以获得更好的用户体验。