将上下文传递给许多方法是否正常?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将上下文传递给许多方法是否正常?相关的知识,希望对你有一定的参考价值。

我在许多活动中使用不同的对象(例如大型Bitmap),这就是为什么我创建了一个名为DataHolder的类,它将许多共享对象保存为静态对象。

但是,我也经常使用共享首选项,这就是为什么数据类还包含一个名为Shop的共享首选项助手类的单例。

这与共享位图等的结合导致我必须将上下文传递给使用Shop的每个方法!我可能有一个上下文对象作为我的方法的50%的参数,这是非常烦人的。

传递背景很常见吗?

如何改进我的数据结构?

答案

您可以考虑使用全局ApplicationContext,它可以满足您加载DataHolder对象的目的。通常我不使用这样的上下文,但是,在我看来,您的情况完全适合使用全局应用程序上下文。

为此,您可以考虑在项目中使用以下类。

import android.content.Context;
import android.support.multidex.MultiDexApplication;

public class MyApplication extends MultiDexApplication {

    private static MyApplication myApplicationInstance;

    public static MyApplication getMyApplicationInstance() {
        return myApplicationInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        myApplicationInstance = this;
    }

    public static Context getAppContext() {
        return getMainApplicationInstance().getApplicationContext();
    }
}

并将此Application类添加到您的AndroidManifest.xml,在application标记下,如下所示。

<application
    android:name=".MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <!-- Your activity declarations go here-->

</application>

因此,不是传递Context,而是可以从单个空间提供上下文,从而改善您的数据结构。希望有所帮助!

以上是关于将上下文传递给许多方法是否正常?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用底部导航视图和 Android 导航组件将参数传递给片段?

Android - 如何将自定义对象传递给片段

将许多参数传递给方法的最佳实践?

将许多参数传递给控制器​​的好方法是啥?

通过 Uri 将参数传递给 WPF 页面

如何将库类或对象传递给片段?