sql >> Base de Datos >  >> RDS >> SQLite

java, Uso correcto de variables estáticas para evitar interbloqueos - Sincronización

Creo que todo lo que necesitas es crear clase de aplicación

[1] Todas las variables que ha tomado en Util, que se usan en casi todas las demás clases, se pueden tomar en esta clase de Aplicación. Entonces estas variables estarán disponibles para todas las demás clases.

[2] Crear una instancia de Singelton de clase de aplicación . Solo buscalo en Google.

[3] También cree Singleton de DataBaseHelper (si es posible y se puede aplicar), por lo que una sola instancia lo ayuda en todas partes.

La clase de aplicación es una clase global en Android, por lo que puede usarla para almacenar y acceder a todos los datos globales. p.ej. :

public class AppData extends Application {

    public static AppData appData;

    public int currentUserId; // etc.

    //Const.
    public AppData() {
        appData = this;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        loginPreferences = getSharedPreferences(
            SPF_NAME, 0);

        pathToSDCard = Environment.getExternalStorageDirectory().getAbsolutePath();
        System.out.println("Path : " + pathToSDCard);
       //etc.
    }

 //    MOST IMP  FOR GETTIN SINGELTON INSTANCE     <<<---<<<---<<<---
    public static AppData getAppData() {
        return appData;
    }
}

CÓMO UTILIZARLO, VER ESTO

class ABC extends Activity {
    AppData appData;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.xyz);

        appData = AppData.getAppData();
        ...........
        ...........

        appData.VARIABLE_NAME...
    }
}

Una cosa más. En AndroidMenifest.xml

    ...
    ...
<application             //   In Application Tag
        android:name="PACKAGE_NAME.AppData"  //  <<  Add here class name in which you have extended Application
        android:icon="@drawable/ic_launcher"
    ...
    ...