听“ Google I / O 2012-事半功倍:成为一个好的Android公民”的演讲,您可以在这里http://www.youtube.com/watch?v=gbQb1PVjfqM&list=PL4C6BCDE45E05F49E&index=10&feature=plpp_video看到,我发现自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永远不会被调用。

最佳答案

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

从您的活动中,应该可以执行以下操作:

registerComponentCallbacks( mAdapter );


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

关于android - Android onTrimMemory和ComponentCallbacks2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12710672/

10-11 03:50