Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关还是不关?_Android_Sqlite_Cursor - Fatal编程技术网

Android 关还是不关?

Android 关还是不关?,android,sqlite,cursor,Android,Sqlite,Cursor,在过去的几天里,由于应用程序中的数据库泄漏,我经常收到许多错误消息,所以现在我打开数据库,从中获取查询结果,然后再次关闭数据库 但我的autocompletetextview也使用了游标适配器 我是否也应该这样做:打开DB,获取游标,关闭DB 我的意思是,我没有因为不那样做而遇到任何问题,但是 所以我需要专家的提示,你的提示 你应该总是关闭你的DB连接。< /P> < P>不要考虑使用FialAlIZE()来关闭DB连接。无法保证它何时会被调用,甚至是否会被调用。有关更多详细信息,请参阅“有效J

在过去的几天里,由于应用程序中的数据库泄漏,我经常收到许多错误消息,所以现在我打开数据库,从中获取查询结果,然后再次关闭数据库

但我的autocompletetextview也使用了游标适配器

我是否也应该这样做:打开DB,获取游标,关闭DB

我的意思是,我没有因为不那样做而遇到任何问题,但是


所以我需要专家的提示,你的提示

你应该总是关闭你的DB连接。< /P> < P>不要考虑使用FialAlIZE()来关闭DB连接。无法保证它何时会被调用,甚至是否会被调用。有关更多详细信息,请参阅“有效Java”第二版第7项


能否利用onPause()、onResume()关闭/打开连接?我相信android提供了一些保证,可以调用它们。

您应该能够在onCreate方法中打开数据库,并在onDestroy方法中关闭它。这将保证只要活动处于“活动”状态,它就可以使用,并且最终将被清除

此外,您可能应该在适配器使用的游标上使用“startManagingCursor”。这将确保在暂停、恢复和销毁时分别停用、重新查询和根据需要关闭。适配器中未使用的游标应该在从它们获取数据后立即关闭


如果遵循这些规则,应该不会有泄漏。

我只是想,如果每次用户在autocompletetextview中键入新字符时重新打开DB有意义的话。也许还有其他解决办法?!嗯,打开一个DB连接是非常昂贵的,所以它取决于应用程序的上下文。最理想的选择是尽可能晚地打开与DB的连接,直到调用最后一个查询为止,然后最后关闭它。在我的情况下,这将是用户准备好键入并单击suggestionlist中的条目或按钮的时间。但是cursoradapter应该如何注意到这一点呢。我看不到任何方法来破坏或关闭cursoradapter。。。但我现在有了一个想法。我实现了自定义游标适配器,所以我可以编写一个close方法。。。谢谢:)。。。或者我只是用finalize方法关闭数据库连接?!六羟甲基三聚氰胺六甲醚。。这也是个好主意。。还是不?我不了解谷歌的人。他们提供了一些使用数据库或游标的教程(例如,记事本教程)。我从来没有见过任何用于游标或数据库的封闭方法。。。我也试过StartMagingCursor,但我有问题。。。不记得为什么会这样,缺少关闭游标可能是因为他们所做的每件事都被startManagingCursor覆盖了,他们积极地推广了startManagingCursor。在onDestroy中无法关闭DB当然是草率的,但我不知道这有多危险。