In this blog, I am describing the most important concept of Android Development which is the Singleton Pattern. It is also a very important interview question that is asked to Android Developers.
What is Singleton in Android?
It is basically a design pattern we use in Android Application Development.
How it is achieved?
It is achieved by simply making the constructor of a class as private.
Purpose of this pattern?
This pattern is basically used to restrict a class of making new instances. We use this pattern when we want a class to not be able to create a new instance in any way.
Making a singleton is not difficult but making it perfect is a thing that is a little challenging.
Below is the example of a perfect singleton.
- pubic class SingletonClass{
- private static SingletonClass sClassInstance;
- private SingletonClass(){
- if(sClassInstance != null){
- throw new RuntimeException("getInstance() method will be used to get single instance of this class");
- }
- }
- public synchronized static SingletonClass getInstance(){
- if(sClassInstance == null){
- sClassInstance = new SingletonClass();
- }
- return sClassInstance;
- }
- }
In this examle, a class is defined and named as SingletonClass, which is basically a singleton class. This class contains a private static instance of class, a private constructor, and a synchronized static method getInstance().
Why do we use synchronized?
It is necessary to use while working in a multithreaded environment. It prevents two threads creating NEW INSTANCE for each. There may be a time when two threads access the method at the same time and if we will not use synchronized Singleton pattern, the rule will break and a new instance will be created in the heap which is an extra load and nothing else. To avoid this, it is necessary to use synchronized with an instance method.