Singleton in Android

A singleton in android it’s the same that in Java. A singleton is a class for which only one instance can be created provides a global point of access this instance. The singleton pattern describe how this can be archived.

Singletons are useful to provide a unique source of data or functionality to other Java Objects. For example you may use a singleton to access your data model from within your application or to define logger which the rest of the application can use.

public class Singleton {
    private static Singleton mInstance = null;
 
    private String mString;
 
    private Singleton(){
        mString = "Hello";
    }
 
    public static Singleton getInstance(){
        if(mInstance == null)
        {
            mInstance = new Singleton();
        }
        return mInstance;
    }
 
    public String getString(){
        return this.mString;
    }
 
    public void setString(String value){
        mString = value;
    }
}

In ActivityA We set the string value.

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class ActivityA extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        //Show the string value defined by the private constructor
        Toast.makeText(getApplicationContext(),Singleton.getInstance().getString(), Toast.LENGTH_LONG).show();
 
        //Change the string value and launch intent to ActivityB
        Singleton.getInstance().setString("Singleton");
        Intent intent = new Intent(getApplicationContext(),ActivityB.class);
        this.startActivity(intent);
    }
}

In ActivityB We get the string.

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class ActivityB extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        //Show the string value of the singleton
        Toast.makeText(getApplicationContext(),Singleton.getInstance().getString(), Toast.LENGTH_SHORT).show();
    }
}