2

我的应用程序越来越大。

为了使其健壮,我决定将其拆分为活动之外的单独类,每个类代表一组活动功能。

问题是,我经常需要这些类中的上下文/活动变量。

这让我感到困惑:

我应该“扩展” MainActivity 类,然后使用 parents() 获取 context/actvitiy 方法,还是应该使用 Context/Activity 变量实例化每个类,如下所示:

static private BrowseHandler instance;

static public void init(Context ctx, FragmentActivity ac) {
    if (null==instance) {
        instance = new BrowseHandler(ctx, ac);
    }
}
static public BrowseHandler getInstance() {
    return instance;
}

哪种方法更好?

或者,我是否错过了重点?我应该将我的活动代码保存在我的活动中吗?

4

1 回答 1

2

不要将其Context放在静态字段中。静态变量由类的所有实例共享,因此将上下文放在静态变量中会降低类的可重用性,因为它只能在一个上下文中使用。(用于初始化静态字段的上下文)。

相反,当您调用不在 Activity 中的代码时,将上下文作为方法参数传递。

关于您扩展 MainActivity 的想法......这似乎是一个奇怪的模式。将如何实例化它?

new MyExtendedMainActivity(this);

扩展 MainActivity 没有真正的附加值。唯一的缺点是:你不能扩展其他东西。此外,您将拥有 Android 操作系统无法处理的 Activity 对象。请记住,在 android 中,您永远不会自己实例化活动:android 框架会为您完成它,而您只有回调来配置它。

于 2013-02-16T15:04:47.467 回答