- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道在哪里询问这个问题,我找不到战略信息,关于 Android 应用程序架构的“全貌”信息,所以请耐心等待我。我尝试了programmers.stackexchange,但那里几乎没有任何 Activity 。
这是我的问题:
我有一个 Android 应用程序,其中用户拥有多组项目,每个项目大约有 10 个属性。
我现在在做什么:
我在想,这是一个好的做法吗?我可以绕过第 3 步(将项目存储在本地数据库中),而是维持 LinkedHashSet 对象的生命周期并直接从那里获取项目吗?如果我的建议是正确的,我该怎么做?
最佳答案
就我个人而言,根据我自己的经验,我会避免第二个数据库存储。引入 2 个数据库,一个用于加载,一个用于存储,引入了一个新的潜在故障点,因为另外在同步内存中的数据时,您必须在某个时刻同步两个数据库,这意味着您必须实现一个额外的过程,这可能会降低性能。
此外:假设您已将 LinkedHashSet
与本地 SQLite 数据库同步,但未与服务器的数据库同步,并且由于某种原因 Android 决定终止您的应用:您拥有 LinkedHashSet
在内存中,哎呀...您在内存中的更改丢失了。现在你重新启动你的应用程序,哪个数据库拥有最新的数据?好吧,您可以存储 last_change
时间戳值,但我试图让您看到它不值得。至少不是两个相同的类型。
我要做的是其中之一:
只需使用中央服务器数据库即可。要同步,当您的应用程序处于 Activity 状态时,请定期(在合理的时间内)打开一个新的Thread
或AsyncTask
,这将打开一个Socket
到您的中央数据库并同步您的数据(与另存为草稿...
机制类似的行为)。您的应用程序可能会崩溃,但如果您定期同步数据,损失不会像您不会那么灾难性,因为您将有一个相当新的备份。支持这种方法的事实是,通过这种方式,您的数据将始终保持最新。缺点是您必须设置一个“更强大”的数据库服务器(我的意思是在硬件性能方面),就好像您计划拥有很多用户一样,对数据库的请求现在会更加频繁(总体而言,对于写入而言) 。另一个缺点是连接问题。可能会发生在某些时候由于连接问题而无法连接到数据库的情况,但这仅意味着您必须通过捕获相应的异常来处理此过程.
如果您不喜欢第一种方法,还有另一个想法:您使用 POJO,这意味着它可以转换为 JSON,因此您可以将其保存到 SharedPreferences
。这可能是您的辅助数据库,结合定期同步的想法,您可以简单地将其保存到您的 SharedPreferences 中并将其用作存储。有时只需将这些首选项与您的中央数据库同步(例如,每次启动应用程序时),主要优点是这是一个非常有效的操作(因此您可以比数据库同步方法更频繁地调用它),这样你就会拥有某种复制系统。
关于java - Android关于数据持久化的战略决策,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21672177/
是否有显示测试用例数量以提供决策/条件覆盖率的工具? 例如: if(x>0) if(x0) 3 个案例足以覆盖决策/条件。 if(x>0) if(x0) 4 个案例足以覆盖决策/条件。 这是真的吗?
我正在尝试找到一种优雅的方式来实现易于维护的决策算法,因为决策的条件可能经常变化。 我将尝试更具体地举一个例子: 假设我正在尝试管理一家餐厅厨房的 cooking 厨师团队。 每个厨师都知道如何 co
我需要一个 Android Activity ,它应该显示一个字段,如带有图像的标题和其下方的几个动态生成的项目(我认为是 1 到 100)。如果我不想让 headsection 滚动,我会使用 Li
我正在编写函数以从值列表中提供最大值(value)。我的问题是如果所有值都相同怎么办?例如, 30,29,34,45 简单。最大值为 45。现在, 20,20,20,20 这里的最大值是20吗?或者没
我需要知道哪个检索事件日志的速度更快,但我在比较中找不到:假设需要查找的所有列都有btree索引,需要查找的json对象中的所有键都有GIN索引。 case 1: ActivityID (in
我需要在我的 iPhone 应用程序中显示一个表格: neither the number of cells nor the contents are known at compile time, b
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
这是针对在 MinGW/Windows 上使用 SDL 的小型游戏项目。 我正在研究一个物理引擎,我的想法是拥有一个Physics::Object,所有物理对象都应该派生自它,并且它会在全局 Phys
我有一个小的 LINQ 查询来填充下拉控件(WinForms Telerik 应用程序),其中的数据行显示两个值(ITNBR 和描述): var query = from i in db.ItemMa
我正在尝试使用 antlr 3 为我的语法生成词法分析器和解析器。有人可以解释这个错误是什么意思吗? error(211): T.g:14:6: [fatal] rule stmt has non-L
partykit包很好地表示了决策树。我遇到的唯一问题是标签很长然后它们重叠。是否可以移动这些标签以防止它(见下图中的蓝色箭头)? library("rpart") library("partykit
所以我环顾四周,似乎找不到合适的解决方案来解决我的问题。 问题 在我的布局中,我希望能够根据数据库中的内容选择在运行时是否存在导航项: 当前布局(导航栏) @Html.Acti
我目前正在创建一个机器学习 jupyter 笔记本作为一个小项目,并希望显示我的决策树。但是,我能找到的所有选项都是导出图形然后加载图片,这相当复杂。 所以想问问有没有办法不用导出加载图形,直接显示我
grammar AdifyMapReducePredicate; PREDICATE : PREDICATE_BRANCH | EXPRESSION ; PREDICA
我是一名优秀的程序员,十分优秀!