0

次のアーキテクチャのクラスを取得しました。

public class StaticClass{
    private static LruCache<Obj> list = new LruCache<Obj>();

    public static LruCache<Obj> getList(){
           return list;
    }
}

現在、このリストへの参照は単純なアクティビティでのみ使用されています。ただし、アクティビティは、すべてのアクティビティが閉じられた後も存在し続けるサービスを開始します。サービスがプロセスに存在する場合、静的リストへの参照は引き続き存在しますか? 私のサービスは大量のメモリを必要とするため、これを尋ねています。さらに、アプリケーションを再度開くと、すべてがはるかに高速であることがわかります (lru キャッシュはビットマップ キャッシュ用です)。 static が存在し続けていると思います..

編集: それは本当に奇妙です!静的参照を無効にしてからアプリケーションを再度開くと、カーソル アダプタから null ポインタ例外が発生します。実際、カーソル アダプターのコードは次のようになります。

public MyAdapter(){
     cache = StaticClass.getCache();
}

public void bindView(View view, Context context, Cursor c) {
     cache.get(...) //this throws null pointer exception

だから私が考えることができる唯一のことは、アダプターは私のメインアクティビティが閉じられていないということです...しかし、それは: onDestroy() が呼び出されます: 私はそれをチェックしました! そして、私のサービスにはアダプターへの参照がまったくありません!

4

0 に答える 0