我想知道为什么具有2.1-update1的摩托罗拉里程碑与仿真器或Nexus One的行为不同.我试图退出我的应用程序:
@Override
protected void onPause() {
if(mayDestroyActivity) this.finish();
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
这适用于模拟器或Nexus One.onDestroy()
在onPause()
和之后立即被称为onStop
.但不是里程碑.而是onDestroy()
在启动另一个Activity时调用.它在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>
Run Code Online (Sandbox Code Playgroud)
有人对此有暗示吗?我的应用程序取决于正确退出,因为我保存了所有进度onDestroy()
谢谢,
斯蒂夫
你做错了.这就是Doc所说的:
注意:不要指望这种方法被称为保存数据的地方![...]在某些情况下,系统会简单地杀死活动的托管过程,而不会在其中调用此方法(或任何其他方法),因此不应该使用它来执行在过程消失后仍然存在的事情.
http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29