onDestroy()在this.finish()后不会被调用()
问题描述:
我想知道为什么摩托罗拉Milestone 2.1-update1的行为与仿真器或例如Nexus One。我试图退出我的应用程序:onDestroy()在this.finish()后不会被调用()
@Override
protected void onPause() {
if(mayDestroyActivity) this.finish();
super.onPause();
}
这适用于Emulator或Nexus One。 onDestroy()
在onPause()
和onStop
后立即被呼叫。但不是里程碑。相反,onDestroy()
在另一个活动启动时被调用。它在清单中的部分如下所示:
<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
答
如果用户退出到主屏幕,这并不意味着应该退出该应用程序。在大多数情况下,如果应用刚刚进入背景,它将带来更好的用户体验。尝试依赖saveInstanceState和onPause。
退出一个应用程序被看作是在Android的世界不好的做法,采用了手机,支持多点触控真能获得更好的用户体验,如果应用程序保持按压主屏幕后运行良好的系统。
答
你做错了。这就是医生说:
注意:不要在这个方法 算被称为一个地方保存 数据! [...]在有些情况下 ,系统简单地杀死 活动的托管过程中没有 在 调用此方法(或任何其他人),所以它不应该被用来做是为了保持 东西这个过程结束后,大约在这个时候。
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
谢谢,我想通了。里程碑的不同行为使我终于看到事情的正确方向。奇怪但有趣而有用... – stfn 2010-06-15 08:44:55