我在哪裏/如何將數據庫連接集成到我的Android應用程序中遇到了一些麻煩。在嘗試了幾種不同的方法後,我決定擴展應用程序類並將其放在那裏。據我瞭解,雖然我需要它是靜態的,所以我可以從任何地方訪問它,並且我使用了需要應用程序上下文工作的GreenDAO。在哪裏把數據庫連接在Android應用程序
現在的問題是我已經開始使用Dagger2(我不太明白,但有某種方式讓它工作),但它不允許靜態注入。下面是MyApp的類:
public class MyApp extends Application {
@Inject
public DataSource dataSource;
private static MyApp instance;
public MyApp() {
instance = this;
}
@Override
public void onCreate() {
super.onCreate();
// Connect to our datasource
if (dataSource == null) {
DaggerDataSourceComponent.builder().dataSourceModule(new DataSourceModule(getInstance())).build();
}
}
public static MyApp getInstance() {
return instance;
}
public DataSource getDataSource() {
return dataSource;
}
}
,這裏是我的DataSource類:
public class DataSource {
public DaoSession daoSession;
Context context;
public Database db;
@Inject
public DaoMaster.DevOpenHelper helper;
public DataSource(Context context, DaoMaster.DevOpenHelper helper) {
this.context = context;
this.helper = helper;
db = this.helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
}
一般來說,這一切工作不錯,但只要我開始旋轉屏幕,我得到數據庫的內存泄漏。我認爲這是因爲數據庫不是靜態的,並且在每次輪換時都被重新創建?我無法在我的活動中創建數據庫連接,因爲我在MVP中理解活動不應該知道這些事情。
任何意見,我應該如何去解決這些內存泄漏,將不勝感激。
UPDATE:
周圍玩耍似乎並不在MyApp的數據源的注入實際上是工作,事實證明,它只是在我的相互作用因子類的工作之後(也注入數據源) ,所以我沒有意識到它在MyApp類中沒有做任何事情。如果可能,我想在MyApp類中進行排序,這樣我就可以在全局訪問單個連接(除非有更好的方法)。