家を押して私のアプリに戻ったら、少し後で状態が完全に保存されていることがわかります。しかし、何らかの理由で私が電話をロックしてからロックを解除すると、私のアプリは元の状態バーに戻ってきました。ログを調べると、電話がロックされた状態でonCreateが呼び出されたことがわかりました。電話をロックするのはかなり手間がかかりますので、そうするたびにゲームをリセットするのはユーザーにとって望ましくありません。電話をロックした後、少なくとも数秒間以上、これを避けるにはどうすればいいですか?Androidのロック画面の動作
答えて
これは、Android OSが動作する方法です。これは、自分のビューを破棄する時期を決定します。あなたの活動
@Override
public void onSaveInstanceState(Bundle outState){
iGameContent.saveGame(outState);
}
保存outStateにすべての必要なデータで再実装することができます方法があり、この情報を失うことを避ける、とのonCreateメソッドでは、このように、その場合は、新しいインスタンスまたは保存されたインスタンスを確認するには:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
if (savedInstanceState!=null){
iGameContent.loadGame(savedInstanceState);
}else{
// Normal initialization
}
}
バンドルへの保存/負荷の例は、次の画面ロックに
public void loadGame(Bundle aBundle){
iBadsHit = aBundle.getInt("iBadsHits",0);
}
public void saveGame(Bundle aBundle){
aBundle.putInt("iBadsHit", iBadsHit);
}
ログにonCreateが呼び出されたことが表示されている場合は、アプリプロセスが終了したことを意味します。
あなたはAndroid Activity Lifecycleを知っていますか?そうでない場合は、ここでそれを読んでください:Android Activities
はい、私はそれほど多くはないと思いますが、携帯電話がロック画面で自分のプロセスを一貫して殺しますが、まだ他のもののために使用されています。また、スプラッシュ画面が再び表示されないので、プロセスを完全に終了させることはできません。 – Jack
また、自宅を押してロックすることができ、状態が完全に保持されるということは奇妙です。 – Jack
それは殺されていない。私はあなたのゲームが横長の向きになっていると思いますよね?もしそうなら、私の答えのリンクに説明されているようにゲームの状態を維持するだけです。しかし、次回起動時にユーザーがHomeを押してゲームを再開させたくない場合は、とにかくこれを実行する必要があります。 – C0deAttack
現象が一つのデバイスから他方に変化し得ます。いくつかのイベントは、アプリケーションの破壊を引き起こす可能性があります。あなたはのAndroidManifest.xmlでそれを指定して、このような状況を避けるために、このイベントの一部を処理しようとすることができます:
android:configChanges="keyboardHidden|orientation"
これら二つは、画面ロックの中で最も問題となっています。この最後の章の詳細については、こちらをご覧ください。nvidia document
- 1. Androidキオスクモード(ロック画面なし)
- 2. ロックされた画面で動作するAndroidアプリケーション
- 3. Android画面のロックを交換する
- 4. FlutterのAndroidロック画面ウィジェットですか?
- 5. Android 4.0のロック画面のようなウェーブアニメーションを作成
- 6. Android - 本当の偽のロック画面を作る方法
- 7. Androidのロック画面を作成するApp。
- 8. iOSロック画面アプリの起動
- 9. アンドロイドのロック画面のホームボタンの動作を変更する
- 10. WP7で私のアプリケーションの画面の動作をロック
- 11. Android、ロック画面と回転処理
- 12. Androidロック画面でウェブサイトを表示
- 13. Androidは画面にアプリをロックする
- 14. 画面ロックとロック解除
- 15. UWP設定のロック画面が動作しない
- 16. 画面をオフ/ロックしない - アクティビティを起動しない - Android
- 17. 画面がロックされているときにAndroidアプリケーションが動作しない
- 18. デフォルトのロック画面を超えたAndroidのアクティビティ - Android Marshmallow
- 19. ポストバックのASP.NETロック画面(マスターページ)
- 20. アンドロイドのロック画面はAndroidを使用してプログラムでロック画面のために
- 21. Androidのゲーム起動画面
- 22. Androidアプリレベルの作成画面
- 23. ロック画面の画像変化
- 24. Androidデバイスの画面の向きをグローバルにロックする方法
- 25. ロック画面でのJava Androidの通知通知
- 26. ロック解除ロック画面AppleScriptは
- 27. 画面の自動ロック後にアプリを実行し続ける - Phonegap(Android/iOS)
- 28. メディアセッションの互換性:ロックンロール前のさまざまなロック画面の動作
- 29. DevicePolicyManagerの設定画面でアンドロイドアプリのロック画面を開く
- 30. Androidでロック画面のカスタム情報を表示
長期保存(例:ハイスコア)や短期(例:最後のレベルの再生)について話していますか? – Jack
いいえ、短期間。アプリを閉じると、バンドルはクリアされます。 onSavedInstanceStateシステムがアプリを殺していないように見えます – Corbella
このバンドルにあるクラスのすべての変数を書き込むだけで、バックグラウンドや向きが変わったときに復元されます。しかし、アプリケーションを起動するときではない – Corbella