0

カスタム ビューを使用して画面に描画する非常にシンプルなゲームを開発しました。私の電話 (Android 2.2) では、デバイスのホーム ボタンを押して、他のタスクを実行できます。ゲームに戻ると、以前の正確な状態に復元されます。問題は、この動作が発生するために、メソッドをオーバーライドしたり、実際に何かをしたりする必要がなかったということです。ただし、ハニカムでは、期待どおりにすべてがリセットされます。

非常に不可解です... この点に関して、Honeycomb を 2.2 のように動作させる方法があるかどうか疑問に思っていました。私はビュー ステートの保存にあまり慣れていませんが、たくさんの変数 (カスタム オブジェクトの保存方法によっては数百) があるので、手動で行うのは不快だと思います。

4

1 に答える 1

1

解決できました。すこし。

基本的に、この問題は、Android が画面を処理する方法が私のアクティビティで縦向きモードに固定されていることが原因でした。2.2 では、Android はポートレート モードでアクティビティを開き、アクティビティを再開しませんでした。ただし、Android 3.0 では、アクティビティを開き、THEN で画面を回転させて、アクティビティを再開させます (これは、回転が発生したときに発生するためです)。

これを修正するために、マニフェストのアクティビティに次を追加しました。

android:configChanges="keyboardHidden|orientation"

これにより、構成の変更を自分で処理することが Android に通知されます。私の場合、アプリケーションは縦向きモードでロックされているため、何もしません。

アプリケーションが一時停止されたときに状態がクリアされない理由は、onCreate() が呼び出されないためです。ただし、Android は onCreate() を呼び出すアプリケーションを強制終了できることを認識しているため、Activity 変数を保存し、それらを使用して View を再作成することで、その状況を処理する必要があります。

于 2011-08-22T12:29:05.647 に答える