2017-05-18 1 views
0

Guten Tag, tut mir leid für mein schlechtes Englisch Ich benutze Google Translate, ich bin neu mit greendao, ich habe viele Tutorials in internen gelesen und alle zeigen ein Beispiel, wie man es innerhalb einer Aktivität ausführen, dh die DaoSession erhalten außerdem:Wie bekomme ich die DaoSession in einer Projektbibliothek?

DaoSession daoSession = ((App) getApplication()). getDaoSession();

Meine Frage ist, wie bekomme ich die DaoSession in einer Projektbibliothek? Da ich den getApplication()

Dank für Ihre Hilfe

Antwort

0

meiner Lösung nicht nennen kann, die aber nicht wirklich, wenn es sehr optimal ist, nicht auf Anwendung abhängig war, weil ein Android App nur eine Anwendungsklasse in der erklärt hat Manifest der Hauptanwendung, in der die Bibliothek ausgeführt wird. Also entschied ich mich, eine Klasse mit dem Singleton-Muster zu erstellen und von dort aus bei Bedarf zu DaoSession zu telefonieren. Ich lasse den Code für den Fall, dass es ihnen dient, oder wenn sie es verbessern können.

ist dies die Klasse

public class DaoHelper { 

private static volatile DaoHelper daoInstance; 
private DaoSession daoSession; 

private DaoHelper(Context context){ 
    //Prevent form the reflection api 
    if(daoInstance!=null){ 
     throw new RuntimeException("Use getInstance() method to get the single instance of this class."); 
    }else{ 
     CustomDaoMaster.OpenHelper helper = new CustomDaoMaster.OpenHelper(context, 
       "db",null); 
     SQLiteDatabase db = helper.getWritableDatabase(); 
     CustomDaoMaster daoMaster = new CustomDaoMaster(db); 
     daoSession = daoMaster.newSession(); 
    } 
} 

public static DaoHelper getInstance(Context context){ 
    //Double check locking pattern 
    if(daoInstance==null){ 
     synchronized (DaoHelper.class){//Check for the second time. 
      //if there is no instance available... create new one 
      if(daoInstance==null)daoInstance = new DaoHelper(context); 
     } 
    } 

    return daoInstance; 
} 

public DaoSession getDaoSession(){ 
    return daoSession; 
} 

}

Und eine Möglichkeit, es

DaoSession daoSession = DaoHelper.getInstance(context).getDaoSession(); 
zu verwenden
Verwandte Themen