3

2.1-update1を搭載したMotorolaマイルストーンがエミュレーターやNexusOneなどとは異なる動作をするのはなぜだろうと思います。次のコマンドでアプリを終了しようとしています:

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

これは、エミュレーターまたはNexusOneのいずれかでうまく機能します。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()

ありがとう、
ステフ

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 に答える