2011-08-27 11 views
18

接続を閉じることは決してありません。私は、あなたがそれを閉じずに別のものを開くことを試みるなら、例外を得ることを知っていますが、グローバルシングルトンを持っていればどうなりますか?何か案が?当日は、(岬と一部を含む色鮮やか面白いに見える衣装で、人間の束によって保存されるまでAndroidのSQLite接続を決して閉じないでください

答えて

25

切れ間は、宇宙のすべての生命の絶滅を脅かし、時空連続に形成されており、あなたがそれを信じることができれば)。

ああ、いや、待ってください。それはちょうど漫画の本でした。


実際には何も起こりません。私はGoogle社員やその他のAndroidの専門家から、SQLiteの動作(特にトランザクションの処理)のために、データベースを閉じることができない場合は何も起こらないと言われています。あなたは、コンテンツプロバイダを実装する場合、コンテンツプロバイダは、あなたのデータベースをクローズする機会を持つことはありませんつまり、onDestroy()方法の任意の並べ替えで呼び出されていないよう

は実際には、あなたは、これと同じ効果があります。コンテンツプロバイダは、プロセスが終了するまで存続します。個人的には、これは本当にバグです。私はコンテンツプロバイダの使用を最小限にしようとする理由の1つです。

+4

コンテンツプロバイダーは、Androidの中でもっとも理解されていない、最も過度に使用されている部分の1つです。彼らは、ドキュメントや、少なくとも初期のドキュメントに大きく押し込まれていますが、サードパーティのアプリケーションとデータを共有する場合にのみ使用してください。私は人々がDBアクセスをシリアライズするためにそれらを使用するのを見ましたが、それはひどいです。とにかく、私は静的な接続がうまくいくと考えました。私は、複数の接続で何が起こるかをテストしました。要約、その悪い:http://www.touchlab.co/blog/android-sqlite-locking/。 ORMLiteの接続管理の再ハッシュに取り組んでいます。ありがとう。 –

+0

それはすばらしいブログの投稿、BTWです。 – CommonsWare

+0

そのブログ投稿はもはや存在しないようです。新しいリンク? – John

関連する問題