2011-11-11 7 views
0

私はDBManager層を使用しています。テーブルのすべてのSQLiteOpenHelpersをプライベートメンバーとして保持しています。 現在、私はプライベートメンバーとしてDBを必要とする各アクティビティでそれを使用しています:クラスはAndroidアプリケーションのDBManager

public class DBManager 
{ 
    private static final String mTAG = "DBManager"; 
    Context      mContext    = null; 
    DB1   mDB1  = null; 
    DB2   mDB2  = null; 

    public DBManager(Context context) 
    { 
     mContext = context; 

     mDB1 = new DB1(mContext); 
     mDB2 = new DB2(mContext); 
    } 

    @Override 
    protected void finalize() throws Throwable 
    { 
     Close(); 

     super.finalize(); 
    } 

    public void Close() 
    { 
     if(mDB1 != null) mDB1.close(); 
     if(mDB2 != null) mDB2.close(); 
    } 

    .... Public API towards the DB1/DB2.... 

}

を踏襲しているよう質問はこのようなものです。 シングルトンとして使う方が良いでしょうか?私はできますか? do - どのコンテキストを渡すか? または他の方法で使用できますか?

ありがとうございました

答えて

0

私はここにいます。データベースごとに1つのSqliteOpenHelperインスタンスを保持します。 1つのデータベースに対して複数のヘルパーを保持しないでください。これにより、複数のスレッドが同時に書き込みを試みている場合、書き込みに関する問題が発生する可能性があります。

アプリケーションプロセス全体で、Helperインスタンスをシングルトンとして保持します。複数のアクティビティおよびサービスクライアントは簡単にアクセスでき、書き込みロックの問題は発生しません。

詳細はこちらをご覧ください:

http://www.touchlab.co/blog/single-sqlite-connection/

それはsqliteは、複数の接続に関する私のいくつかのブログの記事にリンクします。

関連する問題