我目前正在开发一款Android应用程序,需要从通话记录和文本历史中读取。为了进一步分析,我从相应的内容提供程序中提取了大量条目,创建并将它们全部插入到SQLite数据库中。
但我遇到的问题是,这种情况在多年使用过的手机上运行时(意味着调用和文本产生了大量数据),检索过程和数据库构建过程需要花费太多时间甚至可能导致应用程序崩溃。即使我试图将这些过程放在AsyncTask中,问题仍然存在。所以我的问题是:
我是否正在以一种很好的方式将所有耗时的操作从主UI中移除,或者在Android中处理非常大量数据的更好方法(如果有的话)是什么?
答案 0 :(得分:0)
使用分页逻辑。仅提取最新且相关的数据,并在用户请求时加载旧数据。
答案 1 :(得分:0)
大多数Android手机上的通话记录限制为500个条目CallLog.Calls,而SMS提供商没有此限制,您可以查询表的计数并将查询限制为50个并将其传递给单独的线程进行处理。另外,请确保在低优先级的后台服务中运行此操作,以免干扰设备中正在进行的任何其他操作。