SQLite
 sql >> Datenbank >  >> RDS >> SQLite

java , Statische Variablen richtig verwenden, um Deadlocks zu verhindern - Synchronisieren

Ich denke, alles, was Sie brauchen, ist, Anwendungsklasse zu erstellen

[1] Alle diese Variablen, die Sie in Util übernommen haben und die in fast allen anderen Klassen verwendet werden, können in diese Anwendungsklasse übernommen werden. Diese Variablen stehen also allen anderen Klassen zur Verfügung.

[2] Erstellen Sie eine Singleton-Instanz der Anwendungsklasse . Google einfach danach.

[3] Erstellen Sie auch Singleton von DataBaseHelper (wenn möglich und anwendbar), damit Ihnen eine einzelne Instanz überall hilft.

Die Anwendungsklasse ist eine globale Klasse in Android, sodass Sie sie zum Speichern und Zugreifen auf alle globalen Daten verwenden können. z.B. :

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

WIE MAN ES BENUTZT, SEHEN SIE HIER

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

Eins noch. In 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"
    ...
    ...