小编Noo*_*kie的帖子

使用这种方式将上下文传递给非上下文类是否安全

我已经阅读了几篇关于将上下文传递给适配器或其他内容的文章,并且我为获取应用程序上下文做了一些contextholder:

import android.content.Context;

public class ContextHolder {
    private static ContextHolder ourInstance = new ContextHolder();
    private Context context;

    public static ContextHolder getInstance() {
        return ourInstance;
    }

    private ContextHolder() {
        context = null;
    }

    public void setContext(Context context){
        this.context = context;
    }

    public Context getApplicationContext(){
        return context;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在MainActivity中创建ContextHolder对象并设置上下文,如下所示:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ContextHolder contextHolder = ContextHolder.getInstance();
        contextHolder.setContext(this.getApplicationContext());
    }
Run Code Online (Sandbox Code Playgroud)

在其他一些类中,我需要使用contex:

ContextHolder contextHolder = ContextHolder.getInstance();
Resources resources = contextHolder.getApplicationContext().getResources();
Run Code Online (Sandbox Code Playgroud)

问题是,我做对了吗?它会导致内存泄漏或其他令人讨厌的东西吗?

java android android-context

3
推荐指数
1
解决办法
778
查看次数

标签 统计

android ×1

android-context ×1

java ×1