アプリにランタイムデータを保存するために、2つの静的変数を持つクラスがあります。
public class App {
public static ClementineConnection mClementineConnection = null;
public static Clementine mClementine = null;
}
それらはonCreate
最初のアクティビティのメソッドで初期化されます。このアクティビティは、状態(アプリがサーバーに接続されている)に応じて他のアクティビティを開始するだけです。
アプリがアイドル状態であるか、通知を使用してバックグラウンドで実行されている場合、静的変数の1つにアクセスすると、他のonCreateメソッドでNullPointerExceptionが発生することがあります。どういうわけか彼らはガベージコレクションを取得します。アプリにはバックグラウンドで実行されているスレッドを持つサービスがあるので、常に参照が必要だと思いました。
これらの静的変数がガベージコレクションされるのを防ぐ方法を知っていますか?アプリがサーバーに接続されている間、情報が利用可能である必要があります。新しいインスタンス(例Clementine.getInstance()
)を作成することはオプションではありません。
コードを確認したい場合:https ://code.google.com/p/clementine-remote-android/source/browse/