SQLite
 sql >> Base de données >  >> RDS >> SQLite

java ,Utiliser correctement les variables statiques pour éviter les blocages - Synchronisation

Je pense que tout ce dont vous avez besoin est de créer une classe d'application

[1] Toutes ces variables que vous avez prises dans Util, qui sont utilisées dans à peu près toutes les autres classes, peuvent être prises dans cette classe Application. Ces variables seront donc disponibles pour toutes les autres classes.

[2] Créer une instance Singelton de la classe d'application . Juste Google à ce sujet.

[3] Créez également Singleton de DataBaseHelper (si possible et peut s'appliquer), ainsi, une seule instance vous aide partout.

La classe d'application est une classe globale dans Android, vous pouvez donc l'utiliser pour stocker et accéder à toutes les données globales. par exemple. :

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;
    }
}

COMMENT L'UTILISER, VOIR CECI

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...
    }
}

Une chose de plus. Dans 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"
    ...
    ...