活动之间共享的Android SQLite数据库

问题描述 投票:10回答:2

什么是几个活动之间共享一个的SQLite数据库的最佳方式?从DB表示于ListView中,并且还删除/插入记录将被执行。我听说过一些服务,但没有找到我的问题的任何实例。现在我有一个开放的DB SQLiteOpenHelper类。我关闭的onPause的DB(),并在打开的onResume它()。但我不能插入数据从子活动的DB,不顺心的事。

android sqlite
2个回答
20
投票

为您的应用程序的应用程序类。这将在内存中保持活跃,只要你的应用程序的任何部分运行。您可以从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字段,引用相同的底层共享数据库对象。


3
投票

你可以这样做实现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
}
© www.soinside.com 2019 - 2024. All rights reserved.