使用界面为单身人士提供Android上下文?

时间:2018-01-09 05:03:58

标签: java android singleton android-context

我一直在查看一个流行库的分支,它将ApplicationContext作为成员字段保存在单例中。这使得应用程序内存密集,因为该过程有点昂贵。一些分支声称通过使用匿名类实现一个接口来为需求中的单例(herehere)提供Context来解决问题。通常,代码可以总结如下:

界面:

public interface FFbinaryContextProvider {
    Context provide();
}

单身人士:

public class FFmpeg implements FFbinaryInterface {    
    private final FFbinaryContextProvider context;    
    private static FFmpeg instance = null;

    private FFmpeg(FFbinaryContextProvider context) {
        this.context = context;
    }

    public static FFmpeg getInstance(final Context context) {
        if(instance == null) {
            instance = new FFmpeg(new FFbinaryContextProvider() {
                public Context provide() {
                    return context;
                }
            });
        }

        return instance;
    }

    //get the context like this this.context.provide()
    }
}

然后调用Acitivity中的单身人像FFmpeg.getInstance(this);

我不熟悉这种方法。是否仅仅通过将Context隐藏在这样的界面下,只要活动被杀死,垃圾收集器就会收集它?有没有什么资源可以在这个问题上阅读更多内容?

虽然我们的目标是,如果目的是防止内存泄漏,WeakReference是否已经解决了这个问题?在单身人士中使用WeakReference是否有任何不足之处?

0 个答案:

没有答案