我寻找了很久关于我的问题的答案,但是我没有得到我所需要的。 我有一个带有ListView的应用程序和一个表单,可以向数据库添加新记录。 所以不需要进行太多查询。
如何处理与数据库的连接? 在得到所需内容后关闭它还是一直保持打开状态直到应用程序关闭? 性能和电池寿命最好的方法是什么?
因此,为了简单起见,可以扩展Application类以提供单个定义良好的代码入口点,并在其Android做出了一个故意的设计决策,虽然看起来令人惊讶, 但只是放弃了应用程序干净退出的整个想法, 而是让内核清理它们的资源。毕竟, 内核无论如何都需要能够这样做。鉴于这种设计, 在整个进程生命周期中保持 任何 东西打开并且从未关闭它不是泄漏。 它将在进程被清理时被清理。
onCreate()
中打开数据库连接。 将DB连接存储为Application中的一个字段,并提供一个访问器方法来使连接对您的代码的其余部分可用。通常情况下,我会在打开连接的Activity的onDestroy()函数中关闭连接。我会在使用游标的函数中关闭数据库中的游标。
public MyActivity extends Activity{
private myDatabase mDatabase; // myDatabase extends SQLiteOpenHelper
private Cursor mCursor;
public MyActivity(Context context){
super(context);
initMemberVariables();
}
public ElementButton(Context context, AttributeSet attrS){
super(context, attrS);
initMemberVariables();
}
public ElementButton(Context context, AttributeSet attrS, int defStyle){
super(context, attrS, defStyle);
initMemberVariables();
}
private void initMemberVariables(){
mDatabase = new PSEdb(this.getContext());
}
private void getData(){
mCursor = mDatabase.MyGetterFunction();
while(mCursor.moveToNext()){
try{
// populate your data
}catch(CursorIndexOutOfBoundsException ex){
// handle the exception
}
}
mCursor.close();
}
@Override
public void onDestroy(){
super.onDestroy();
mDatabase.close();
}
}
连接数据库是一项昂贵的操作。如果连接不会短缺,且数据库在本地,我会保持连接处于打开状态,而不是为每个写入操作重新建立连接。这通常适用于需要扩展以容纳大量并发用户的客户端-服务器应用程序。