に関していくつか質問がありCursor
ます。
を閉じないことのデメリットを知りたいCursor
ですか?
リソースの割り当てを解除しますが、どのリソースが割り当て解除されますか?
?を閉じないとCursor
?どのような影響があり、どの程度ですか?
a を閉じなくても少しCursor
は影響はありませんが、log cat でエラーが発生します。Activity
に関していくつか質問がありCursor
ます。
を閉じないことのデメリットを知りたいCursor
ですか?
リソースの割り当てを解除しますが、どのリソースが割り当て解除されますか?
?を閉じないとCursor
?どのような影響があり、どの程度ですか?
a を閉じなくても少しCursor
は影響はありませんが、log cat でエラーが発生します。Activity
a を閉じるCursor
と、潜在的なメモリ リークが回避されるため、はい、使用されなくなったら常に閉じる必要があります。
カーソルを 1 つ閉じるのを忘れてしまうという問題が多く発生することはないと思います。問題 (これはほとんどすべてのメモリ リークに当てはまります) は、何度も何度もやり続けると、最終的に何か悪いことが起こるということです。
たとえば、デバイスの SQLite DB からサーバーにデータをアップロードするアプリを作成しました。データベースの読み取りと書き込みが完了するたびにカーソルを閉じないと、最終的にメモリ不足エラーやその他のさまざまな問題が発生します。
カーソルは単なるインターフェースです。多くは、実装、使用しているそのインターフェイスを実装する特定のクラスに依存します...
SQLiteCursor の場合、クリーンアップされるものがかなりあります (これは Froyo からのものです)。
@Override
public void close() {
super.close();
deactivateCommon();
mQuery.close();
mDriver.cursorClosed();
}
カーソルを閉じないでください。データは一貫しているはずですが、メモリリークが発生します...
カーソルを閉じないと、データベース内のデータへのアクセスに問題が発生します。これは、データベースが開いている間は、アクティビティが一時停止するなどの事態が発生した場合にアクセスできないためです。具体的には、アクティビティに管理させると、この問題を軽減できます。