残念ながら、私の Android プロジェクトでは内部状態を持つ C ライブラリを使用する必要があります。ライブラリには、状態維持関数init()とrelease(). init()静的メンバーとメンバーを持つラッパー クラスを作成しましたrelease()。次に、これらのメソッドへの呼び出しをメイン アクティビティOnCreate()とOnDestroy()それぞれに追加しました。
そして、それが私が問題を抱えたところです。システムのメモリが少なく、他のアクティビティがフォアグラウンドにある場合、メイン アクティビティが強制終了され、release()呼び出されます。したがって、ネイティブ ライブラリへの後続の呼び出しはすべて見事に失敗します。
問題は、メイン アクティビティが決して殺されないようにする方法です。または、アクティビティのコールバックで行うよりも、ネイティブ関数を呼び出すためのより良い方法があるでしょうか?