glethien
glethien

Reputation: 2471

Use of static member in Android Application bad?

I've stumpled upon an Android Application Class which implements the Singleton pattern and bind a static object to it.

public class App extends Application 
{
    public static BigObject myObj;

    private static App instance;

    public static App getInstance()
    {
         return instance;
    }

    @Override
    public void onCreate() {
         super.onCreate();
         instance = this;
         myObj = new BigObject(this);
    }

}

Are there any problems with this implementation, regarding performance, memory leaks or maybe Exceptions, when getInstance().myObj.something() is called form BroadcastReceiver or Service?

Upvotes: 2

Views: 191

Answers (2)

Konstantin Berkov
Konstantin Berkov

Reputation: 1212

The only drawback I see is somewhat ugly code, using dependency injection would be better. I don't know, but if OS guarantees that all other components will be launched after Application::onCreate than there is no issues. Even non-main threads will not cache value of bigObject. But if you want set value of bigObject after onCreate, or it's creation takes long time you can face issues with data racing or slow startup.

Upvotes: 1

ligi
ligi

Reputation: 39539

I don't see any problems with this implementation. The Application object is basically a singleton.

Upvotes: 1

Related Questions