2017-01-27 8 views
0

「データベースはロックされています」。SQLiteDatabase使用パターン

なぜこのパターンが間違っていますか、どのように変更する必要がありますか?

+0

MySqliteOpenHelperは何ですか?どの部分はスレッドセーフであると思いますか? – Blackbelt

+0

@Blackbelt 'SQLiteOpenHelper'の部分 – fiddler

+0

@Blackbeltまたは' SQLiteDatabase'の部分はおそらく – fiddler

答えて

1

MySqliteOpenHelperはシングルトンではありません。そのクラスにシングルトンを作成するには、MySqliteOpenHelperに次のようにします。

1種類MySqliteOpenHelper

2の静的instance変数はメソッドを追加(下図のように体)getInstance(Context)と呼ば

public synchronized static getInstance(Context context){ 
    if(instance == null){ 
     instance = new MySqliteOpenHelper(context); 
    } 
    return instance; 
} 

あなたは、常に1つのオブジェクトを使用することになり、これは、スレッドセーフです。

+0

ですが、私は 'SQLiteOpenHelper'がスレッドの安全性を扱うことになっていると読んでいますね。 – fiddler

+0

似たようなことは一度も読んだことはありません。ソースがありますか? – Ryan

+0

http://stackoverflow.com/a/6675272/569558: "ロック関連のSQLiteHelperメソッドを使用すると、スレッドの安全性を確保できます。" – fiddler

関連する問題