Android 在意图之间传递数据

Android 在意图之间传递数据,android,sqlite,android-intent,Android,Sqlite,Android Intent,莱克托里·萨勒姆 我想在我的应用程序中实现一个搜索,我的主要数据结构,一个ListOf(自定义类)在我的主要活动中。这是一个包含2500多个对象的json对象。json文件在我的应用程序启动时被加载/解析,这大约需要30秒。因此,在.putextra中传递数据实际上不是一个选项。搜索对话框甚至需要30秒才能开始搜索,更不用说你的内存使用量会增加一倍 所以问题是,我的选择是什么?有没有一种方法可以将搜索查询传递到我的mail intent并在那里进行处理,这样我就可以处理现有的数据结构?为什么不尝

莱克托里·萨勒姆

我想在我的应用程序中实现一个搜索,我的主要数据结构,一个ListOf(自定义类)在我的主要活动中。这是一个包含2500多个对象的json对象。json文件在我的应用程序启动时被加载/解析,这大约需要30秒。因此,在.putextra中传递数据实际上不是一个选项。搜索对话框甚至需要30秒才能开始搜索,更不用说你的内存使用量会增加一倍


所以问题是,我的选择是什么?有没有一种方法可以将搜索查询传递到我的mail intent并在那里进行处理,这样我就可以处理现有的数据结构?

为什么不尝试将信息保存在singleton对象中?或者在你的应用程序类中?其中任何一项都可以让您访问应用程序中任何位置的对象。

听起来您最好使用SQLite数据库。您甚至可以将预填充的数据库与应用程序一起分发,以最小化加载时间


您可以从这里开始:

您应该检查数据是复制到新对象中,还是它的引用已过时。我很确定只会发送引用,而且您不必等待对象复制到新对象中。因此,坚持使用putExtra,如果你不想创建静态引用,谁是召唤内存泄漏的恶魔:)

听起来不错,因为我还是个新手,你能帮我举个简单的例子吗?或者一个链接?谢谢在方向/配置更改期间如何处理这些问题?这样做的缺点是,单例可能不会始终保留在内存中。Android可能会终止进程以回收资源,然后重新启动它们。您必须检查是否需要重新填充单体。在这里您可以看到单体模式:它是相同的。您只需创建一个类,该类将保留您的模型。Elevine是正确的,物体在极端情况下可能会丢失。活动本身也是如此-如果它在后台的时间太长,系统可能会杀死它,然后尝试恢复它(使用其意图参数)。在这种情况下,您应该能够再次重新加载内容。我已将搜索字符串传递给我的主要活动,并在那里处理它…您的预填充想法一直在我脑海中,最近几天我成功地实现了它!)将加载时间缩短到0。我可以完全删除启动屏幕,不再需要解析json。你有一个问题;我的主意图/活动中有DB helper对象,我需要在另一个意图中显示数据库中的项目。最好的方法是什么?我的意思是,我可以重新连接数据库,但我最终会在两个地方拥有DbHelper对象,这当然是编程死亡罪:)再次感谢!:)应该为每个活动创建DbHelper对象的新实例。由于组件的生命周期,它们可能会被删除,然后重新创建,因此尝试在内存中共享对象并不理想。