收听“Google I/O 2012 - 事半功倍:成为一名优秀的 Android 公民”演讲,您可以在此处查看http://www.youtube.com/watch?v=gbQb1PVjfqM&list=PL4C6BCDE45E05F49E&index=10&feature=plpp_video i发现从 api 级别 14 开始,onTrimMemory
如果你想做一些事情,比如减少内存使用,你可以覆盖。但是我想在我的 Activity 之外实现 ComponentCallbacks2 接口,例如在我的 CursorAdapter 中。在这个谈话中它说:使用Context.registerComponentCallbacks()
,但是当我尝试使用它时,它需要一个输入参数,就像这样mContext.registerComponentCallbacks(ComponentCallbacks callbacks);
我该如何使用它?
现在我正在使用这个
public class ContactItemAdapter extends ResourceCursorAdapter implements ComponentCallbacks2{
... ...
@Override
public void onTrimMemory(int level) {
Log.v(TAG, "onTrimMemory() with level=" + level);
// Memory we can release here will help overall system performance, and
// make us a smaller target as the system looks for memory
if (level >= TRIM_MEMORY_MODERATE) { // 60
// Nearing middle of list of cached background apps; evict our
// entire thumbnail cache
Log.v(TAG, "evicting entire thumbnail cache");
mCache.evictAll();
} else if (level >= TRIM_MEMORY_BACKGROUND) { // 40
// Entering list of cached background apps; evict oldest half of our
// thumbnail cache
Log.v(TAG, "evicting oldest half of thumbnail cache");
mCache.trimToSize(mCache.size() / 2);
}
}
}
但onTrimMemory
永远不会被调用。