android onTrimMemory和ComponentCallbacks2

时间:2012-10-03 14:29:52

标签: android memory callback

聆听“Google I / O 2012 - 少花钱多办事:成为优秀的Android公民”演讲,您可以在此处看到http://www.youtube.com/watch?v=gbQb1PVjfqM&list=PL4C6BCDE45E05F49E&index=10&feature=plpp_video我发现自api 14级以来您可以覆盖{{1如果你喜欢做一些事情,比如减少内存使用量。但是我想在我的Activity中,在我的CursorAdapter中实现ComponentCallbacks2接口。在本次演讲中它说:使用onTrimMemory,但当我尝试使用它时,它需要一个输入参数,如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); } } }

1 个答案:

答案 0 :(得分:8)

由于您的Adapter类已经实现了ComponentCallbacks2,您应该能够将Adapter实例作为参数传递给registerComponentCallbacks()

从您的活动中,这样的事情应该有效:

registerComponentCallbacks( mAdapter );

之后,您应该收到onTrimMemory()个回调。