onCreate メソッドで Init 関数が呼び出されるアクティビティがあります (この関数は、多くの要素と openSLES オーディオ API への呼び出しを含むネイティブ コードを呼び出します)。要点は、この Init 関数が再度呼び出されたときにアプリをクラッシュさせることです。これは、画面の回転時、または [戻る] ボタンを使用してアクティビティを閉じて再度起動したときに発生します (ただし、その間にプロセスが強制終了された場合、問題はありません)。 )。Init 関数の動作を変更できません。
アクティビティが破棄されたときにプロセスが強制終了されないことがわかりました。ドキュメントを読んだ後、これを期待していました。オーディオ信号が再生されている場合、アクティビティが破棄された後も再生が継続されるため、これは良いことです。私の目的に適しています。
onSaveInstanceState を使用して初期化状態のチェックを実行しようとしましたが、onSaveInstanceState が呼び出されたときの画面の回転でのみうまく機能します。[戻る] ボタンを押してもコールバックが呼び出されません。
そこで、onPause で状態保存を行い、Shared Preferences を使用しようとしました。しかし、この時点で私は反対の問題を抱えています: プロセスが強制終了された場合、共有設定の値は保持されますが、その場合、アプリが正しく動作するためには Init を再度実行する必要があります。
プロセスの強制終了後にアクティビティが作成されたかどうかを確実に知る方法が必要だと思いますが、現時点では方法がわかりません。onPause メソッドで bundle インスタンスを使用することを考えましたが、これが可能かどうか、およびその方法がわかりません。どんな種類のヒントも本当にありがたいです。