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
Android数据存储-文件与SQLite_Android_Sqlite_Battery - Fatal编程技术网

Android数据存储-文件与SQLite

Android数据存储-文件与SQLite,android,sqlite,battery,Android,Sqlite,Battery,我正在开发一个定期向外部服务器发送信息的应用程序。为了备份,我制作了一份正在发送的数据的本地副本 在节省电池寿命方面,存储数据的最佳选项是什么?每个数据提交都是一个大约5K-10K的序列化对象(类有5个字段,包括日期、数字和字符串) 还有其他想法吗?我不知道电池寿命,但有一个标准是哪个更容易管理?更少的数据管理操作意味着更少的CPU周期,从而延长电池寿命 我想说SQLite选项更容易。您可以在SQLite表中放置一个日期列,该列存储您的数据,这使得删除不需要的旧提交变得非常容易,并且所有这些都可

我正在开发一个定期向外部服务器发送信息的应用程序。为了备份,我制作了一份正在发送的数据的本地副本

在节省电池寿命方面,存储数据的最佳选项是什么?每个数据提交都是一个大约5K-10K的序列化对象(类有5个字段,包括日期、数字和字符串)


还有其他想法吗?

我不知道电池寿命,但有一个标准是哪个更容易管理?更少的数据管理操作意味着更少的CPU周期,从而延长电池寿命

我想说SQLite选项更容易。您可以在SQLite表中放置一个日期列,该列存储您的数据,这使得删除不需要的旧提交变得非常容易,并且所有这些都可以通过本机SQL库处理。使用您自己的Java代码管理整个文件负载——或者更糟糕的是单个文件——将是更多的工作


此外,您可以将数据写入数据库,然后在需要再次读取之前将其忘掉。如果要将数据存储在文件中,则需要确定何时应该在计算机上读取和写入文件。如果您担心电池问题,您可能不希望写入文件的频率超过应有的频率,并将数据缓存在内存中,但您需要确保在应用程序暂停或销毁时不会丢失任何数据。在我看来,使用SQLite数据库要容易得多,而且不用担心任何问题。

我认为使用SQLite还是文件并不重要,因为SQLite db只是系统上的一个文件(存储在
/data/data//databases/
中)。您需要在正确的时间提交到db,就像您需要在正确的时间将文件保存到硬盘驱动器一样。换句话说,不管怎样,您都可以使用相同数量的硬盘写入

我认为,你选择什么更多地取决于你正在保存什么样的数据。如果您需要拥有db所能赋予的能力(比如查询),那么一定要使用SQLite。然而,如果您不需要数据库,或者您的数据变化很大(并且不能在关系数据库中轻松设置),那么我会选择文件


我可以肯定地告诉您,如果您选择使用序列化来保存文件,则不应使用序列化。Android序列化非常慢,非常慢,而且会创建大文件。出于性能原因,最好编写自己的XML或JSON格式。

您的应用程序是多线程的吗?如果您有多个线程访问数据存储,那么我将使用SQLite。让SQLite来担心锁定问题。

谢谢您的评论,看起来非常合理。您知道数据库是否总是在后台运行(作为传统数据库),还是仅在应用程序使用它时才运行?我的意思是,如果“SQLite服务器”(如果Android中存在这样的进程)仅仅因为我的应用程序而启动。。。也许这不是一个好主意。afaik sqlite只是一个通过库访问的文件,没有运行的数据库服务器。警告,sqlite在某些平台上不是线程安全的(Xamarin)