3

我想知道为什么带有 2.1-update1 的 Motorola Milestone 的行为与 Emulator 或例如 Nexus One 不同。我正在尝试退出我的应用程序:

@Override
protected void onPause() {
    if(mayDestroyActivity) this.finish();
    super.onPause();
}

这适用于模拟器或 Nexus One。在andonDestroy()之后立即被调用。但不适用于里程碑。相反,当另一个 Activity 启动时被调用。它在 Manifest 中的部分如下所示:onPause()onStoponDestroy()

<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()

谢谢,
斯特夫

4

3 回答 3

5

你这样做是不对的。这是Doc所说的:

注意:不要指望这个方法被称为保存数据的地方![...] 在某些情况下,系统将简单地终止活动的托管进程而不在其中调用此方法(或任何其他方法),因此不应使用它来执行打算在进程消失后保留的事情.

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

于 2010-06-14T09:56:19.193 回答
2

你应该使用onSaveInstanceState,检查这个链接。

于 2010-06-14T11:38:52.487 回答
2

如果用户退出到主屏幕,这并不意味着应该退出应用程序。在大多数情况下,如果应用程序只是进入后台,它将提供更好的用户体验。尝试依赖 saveInstanceState 和 onPause。

退出应用程序在 android 世界中被视为不好的做法,如果应用程序在按下主屏幕后继续运行,则配备具有良好系统的真正多点触控的手机可以获得更好的用户体验。

于 2010-06-14T12:16:24.737 回答