在this.finish()之后不会调用onDestroy()

stf*_*tfn 3 android milestone

我想知道为什么具有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()

谢谢,
斯蒂夫

Eri*_*ler 5

你做错了.这就是Doc所说的:

注意:不要指望这种方法被称为保存数据的地方![...]在某些情况下,系统会简单地杀死活动的托管过程,而不会在其中调用此方法(或任何其他方法),因此不应该使用它来执行在过程消失后仍然存在的事情.

http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29