Я пытаюсь создать приложение для Android, используя пакет ORMLite. У меня есть несколько действий и услуг, а также я использую https://github.com/tomquist/Android-Error-Reporter , чтобы получать сообщения об ошибках от клиентских PDA. ORMLite требует, чтобы все действия и службы расширяли OrmLiteBaseActivity и т. Д. Или добавляли соответствующий код для каждого действия, чтобы иметь возможность получить помощник базы данных и освободить его после завершения действия. поэтому добавлять этот код к каждому действию или услуге не очень удобно. У меня также есть несколько вспомогательных классов, которые могут использовать базу данных
. У меня также есть класс приложения, который содержит некоторую глобальную информацию и методы.Поэтому я решил открыть помощник ormlite в классе приложения и использовать его во всех действиях / классах следующим образом:
public class MyApplication extends Application {
private volatile DatabaseHelper databaseHelper = null;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onTerminate() {
if (databaseHelper != null) {
OpenHelperManager.releaseHelper();
databaseHelper = null;
}
super.onTerminate();
}
public DatabaseHelper getHelper() {
if (databaseHelper == null) {
databaseHelper = OpenHelperManager.getHelper(this, DatabaseHelper.class);
}
return databaseHelper;
}
}
и использовать его в других классах следующим образом:
((MyApplication) getApplicationContext()).getHelper();
как вы думаете, это хорошая идея использовать его таким образом или могут быть утечки памяти или другие проблемы с этим? Меня беспокоит то, что onTerminate никогда не работает на реальных устройствах ... Я нахожусь на стадии «опробования новых вещей», поэтому хотел бы услышать какие-либо комментарии по этому поводу, чтобы устранить проблемы, которые я могу получить в будущем при неправильном подходе и отсутствии переписать код.