Joh*_*ens 12 java performance serialization android
我正在寻找加快序列化性能的建议,特别是在使用谷歌Android时.对于我正在进行的项目,我试图将几百个对象从服务器转发到Android应用程序,并且我正在经历各个阶段以获得我需要的性能.
首先,我尝试了一个可怕的XML解析器,我使用Scanner专门针对这个项目进行了攻击,这在加载对象时造成了令人难以置信的缓慢性能(对于300KB文件约为5分钟).然后我离开了那个并使我的类实现Serializable并将我拥有的对象的ArrayList写入文件.将该文件读入到Android中,并且已经下载了文件,请注意~100KB序列化文件大约需要15-30秒.我仍然觉得这对于Android应用程序来说完全不可接受,因为我的应用程序需要在启动应用程序时加载数据.
我已经简要介绍了Externalizable以及它如何提高性能,但我不确定如何使用嵌套类实现它.现在,我正在尝试存储以下类的ArrayList,其下面是嵌套类.
public class MealMenu implements Serializable{
private String commonsName;
private long startMillis, endMillis, modMillis;
private ArrayList<Venue> venues;
private String mealName;
}
Run Code Online (Sandbox Code Playgroud)
和场地类:
public class Venue implements Serializable{
private String name;
private ArrayList<FoodItem> foodItems;
}
Run Code Online (Sandbox Code Playgroud)
和FoodItem类:
public class FoodItem implements Serializable{
private String name;
private boolean vegan;
private boolean vegetarian;
}
Run Code Online (Sandbox Code Playgroud)
IF Externalizable是提高性能的方法,有没有关于java在你尝试写出对象时如何调用对象中的方法的信息?我不确定是否需要在父类中实现它,也不知道如何在每个对象中序列化嵌套对象.
Com*_*are 10
永远不要Serializable
跨架构使用.您无法知道Dalvik VM是否与服务器的Java版本具有兼容的序列化.即使它今天有效,也可能不会在任何一端进行升级.始终选择专为跨架构工作而设计的内容.
选项包括:
此外,在应用启动时加载300K数据是一个麻烦的处方.请考虑利用SQLite允许您一次只处理所需的数据.
归档时间: |
|
查看次数: |
3260 次 |
最近记录: |