在我的
android *项目*我必须跟踪一定数量的产品的产品细节.这些产品上的所有数据都存储在sqlite数据库中.我可以在sqlite中使用select和update来跟踪产品对象.因此,我可以在更改时存储产品详细信息.
此外,我可以在开始时将所有产品加载到哈希映射或此类数据结构中,并跟踪这些产品对象.
对我而言,最重要的是哪一个更有效率和更高效.有人能帮我吗.谢谢!
此外,我可以在开始时将所有产品加载到哈希映射或此类数据结构中,并跟踪这些产品对象.
对我而言,最重要的是哪一个更有效率和更高效.有人能帮我吗.谢谢!
解决方法
这取决于产品的数量. HashMap驻留在RAM中,数据库驻留在磁盘上.
这还取决于每秒查询的数量和查询的性质.数据库开发人员付出了很多努力来支持索引和过滤;如果你需要,重用比重新发明更好.
无论您选择哪种方法,您都必须记住Android应用程序进程可能随时被杀死(例如,当另一个进程需要内存时),并且您的代码只能保证接收onPause()(而不是onDestroy()或onStop( ),参见活动生命周期).如有必要,稍后将重新启动应用程序,但保存在RAM中(而不是保存)的所有数据当然都将丢失.因此,在onPause()或onSaveInstanceState()(what bundles are for)中,必须保存应用程序状态.在您的情况下,这可能意味着必须保存HashMap和所有辅助数据结构.
OTOH,如果产品数量很少(并且预计仍然很小),数据库可能是一种过度杀伤力;如果您只需要选择10个项目中的一个,那么编写循环比完成所有数据库支持要快.
一个更重要的注意事项:一个Activity是一个来自MVC观点的Controller(对于View,你通常创建和XML并重用现有的框架类,尽管你可以编写自定义控件).每次设备方向更改时以及在某些其他情况下,都会重新创建活动.但是您的数据属于Model部分.他们必须在方向改变中存活下来因此,它们不得归活动所有.