Java中的静态类(Android) - 使用或不使用

Mih*_*lko 10 static android class android-activity

最近我开始用Java开发Android版.

我的想法是创建一个静态类,它将在开始时加载大量的东西并存储结果以用于一生的应用程序.

我一直在阅读很多关于如何在活动之间共享对象的内容,我认为最好的方法是创建一个静态类.你怎么看?我应该使用其他方法吗?我问,因为我在互联网上阅读了很多反驳意见.

谢谢.

Eli*_*son 17

我假设你指的是一个类的静态字段,而不是静态类,正如Wyzard指出的那样,它是完全不同的东西.作为一般经验法则,在静态字段中保存信息在Java中不是一个好主意.这样做的原因是它阻止了实例化存储在类中的任何内容的多个实例的能力.

在Android应用程序的特定情况下,处理与应用程序本身相关联的数据存储问题的最佳方法是将类子android.app.Application类化并使用它来处理应用程序全局数据:

class FooApplication extends Application
{
    private String privData;

    public String getPrivData() {
        return privData;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您需要声明此类是您的主应用程序类(而不是默认值Application).在application条目中AndroidManifest.xml添加以下内容:

<application android:name="com.example.application.FooApplication"
             ...>
    ...
</application>
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Context.getApplicationContext()将成为Application子类实例的方法从应用程序内的任何位置查找应用程序实例:

FooApplication app = (FooApplication)Context.getApplicationContext();
String privData = app.getPrivData();
Run Code Online (Sandbox Code Playgroud)

根据您尝试查找"Application"子类的位置,您可能必须调用"getApplicationContext()"而不使用"Context":

FooApplication app = (FooApplication)getApplicationContext();
String privData = app.getPrivData();
Run Code Online (Sandbox Code Playgroud)