首页 > 解决方案 > 安卓:ApplicationContext 类

问题描述

我的应用程序使用了几个具有需要上下文的静态方法的辅助类,为此我创建了一个“ApplicationContext”类,如下所示:

import android.app.Activity;
import android.content.Context;

public class ApplicationContext {

    private Context appContext;
    private static ApplicationContext instance;

    private ApplicationContext(){}

    public void init(Context context)
    {
        appContext = context;
    }

    private Context getContext()
    {
        return appContext;
    }

    public static Context get()
    {
        return getInstance().getContext();
    }

    public static Activity getActivity()
    {
        return (Activity)getInstance().getContext();
    }

    public static Context getApplicationContext() 
    {
        return get().getApplicationContext();
    }

    public static ApplicationContext getInstance()
    {
        return instance == null ? instance = new ApplicationContext(): instance;
    }
}

并且在每个活动的 onCreate 方法中,我都像这样设置当前上下文:

ApplicationContext.getInstance().init(this);

有了这个,我可以在任何需要的地方获取当前上下文或活动的实例,如下所示:

ApplicationContext.get();
ApplicationContext.getActivity();

一切正常,但我不确定这是否被认为是一种好的做法。

另一种选择是声明一个静态上下文,如下所示:

public WeakReference<Context> context;

在我需要它的 -non activity- 类中,将其设置在使用该类的活动中,如下所示:

whateverclassname.context = this;

并像访问它一样

if (context!=null) ... context.get()

首先,我想知道第一种方法是否是好的做法,然后,如果不是,我想知道这两种方法中哪一种是最好的,或者关于如何处理非上下文环境需求的任何建议- 活动课程。

标签: androidandroid-activitysingletonandroid-contextapplicationcontext

解决方案


据我所知,静态弱参考是一种很好的做法。

我建议你按照我的这个答案


推荐阅读