Static class in Java (Android) - use or not use

后端 未结 3 712
小鲜肉
小鲜肉 2021-02-08 12:38

Recently I have started development in Java for Android.

My idea is to create one static class which will load ton of stuff on the beginning and store results for a life

3条回答
  •  走了就别回头了
    2021-02-08 12:59

    I'm assuming that you were referring to static fields of a class, as opposed to static class which, as Wyzard pointed out, is something completely different. As a general rule of thumb, holding information in static fields is not a good idea in Java. The reason for this is that it prevents the ability to instantiate multiple instances of whatever it is you store in the class.

    In the specific case of an Android application, the best way to deal with the issue of having data stored associated with the application itself is to subclass the android.app.Application class and use it to handle application-global data:

    class FooApplication extends Application
    {
        private String privData;
    
        public String getPrivData() {
            return privData;
        }
    }
    

    You then need to declare that this class is your main application class (instead of the default Application). In the application entry in AndroidManifest.xml add the following:

    
        ...
    
    

    You can then look up the application instance from anywhere inside your application using the method Context.getApplicationContext() which will be an instance of your Application subclass:

    FooApplication app = (FooApplication)Context.getApplicationContext();
    String privData = app.getPrivData();
    

    Depending on from where you are trying to look for subclass of "Application", you may have to invoke the "getApplicationContext()" without "Context":

    FooApplication app = (FooApplication)getApplicationContext();
    String privData = app.getPrivData();
    

提交回复
热议问题