我有一个具有以下架构的类:
public class StaticClass{
private static LruCache<Obj> list = new LruCache<Obj>();
public static LruCache<Obj> getList(){
return list;
}
}
现在,对这个列表的引用仅用于简单的活动。但是,一个活动会启动一个服务,即使在每个活动关闭后,该服务仍将继续存在。鉴于服务存在于进程中,对静态列表的引用是否继续存在?我问这个是因为我的服务占用了大量内存,而且我确信内存应该更少,而且当我再次打开应用程序时,我发现一切都快得多(lru 缓存用于位图缓存),所以我'd猜测静态继续存在..
编辑: 真的很奇怪!如果我使静态引用无效,然后重新打开应用程序,我会从我的游标适配器中得到一个空指针异常!事实上,游标适配器代码是这样的:
public MyAdapter(){
cache = StaticClass.getCache();
}
public void bindView(View view, Context context, Cursor c) {
cache.get(...) //this throws null pointer exception
所以我唯一能想到的是适配器是我的主要活动没有关闭......但它是: onDestroy() 被调用:我检查了它!而且我的服务根本没有引用适配器!