什么是几个活动之间共享一个的SQLite数据库的最佳方式?从DB表示于ListView中,并且还删除/插入记录将被执行。我听说过一些服务,但没有找到我的问题的任何实例。现在我有一个开放的DB SQLiteOpenHelper类。我关闭的onPause的DB(),并在打开的onResume它()。但我不能插入数据从子活动的DB,不顺心的事。
为您的应用程序的应用程序类。这将在内存中保持活跃,只要你的应用程序的任何部分运行。您可以从onCreate方法创建您的数据库,并在onTerminate方法清理。 (注意,不能保证onTerminate将被调用,所以你应该小心你依赖于这里。然而,由于SQLite数据库只是一个文件,并agressively刷新,关闭操作是一种礼貌多了一个必要性。)
您可以从任何活动通过“getApplication”访问应用程序,所以DB将始终提供给您。
欲了解更多信息,请参阅http://developer.android.com/guide/appendix/faq/framework.html#3。
更新:
按照要求,这是一个使用getApplication的例子。这真是令人难以置信的简单。
SQLiteDatabase mDB;
@Override protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDB = ((MyApplication)getApplication()).mDB;
}
如果每一次活动都包含此代码,那么每一个活动都会有它自己的MDB字段,引用相同的底层共享数据库对象。
你可以这样做实现BaseActivity类什么是应用程序中所有活动类扩展:
public class BaseActivity extends Activity {
protected static SQLiteOpenHelper database;
@Override
protected void onPause() {
// TODO close database
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
// TODO open database
}
}
public class OneSubActitivy extends BaseActivity {
// methods using database from BaseActivity
}