2013-02-15 3 views
1

Я использую simpleXml с Android для сериализации/десериализации списка объектов. Раньше у меня было 30 разных объектов каждый с ассоциированным классом, который содержит список. Для того, чтобы написать меньше повторяющийся код я решил использовать только класс со списком аннотированного с @ElementListUnion, как это:Производительность SimpleXml тега @ElementListUnion над Android

@ElementListUnion({ 
    @ElementList(entry = "A", inline = true, type = A.class, required=false), 
    @ElementList(entry = "B", inline = true, type = B.class, required=false), 
    @ElementList(entry = "C", inline = true, type = C.class, required=false) 
    }) 
private List<Object> serializableList; 

Когда элемент список растет, я отметил, что производительность десериализации над андроидом падает. Существует ли другая форма для этого с другой аннотацией, или мне нужно вернуться к старой реализации моей программы?

Примечание: Все элементы моего списка одного и того же типа, serializableList может быть List<A>, List<B> или List<C>.

Благодаря

+1

Какую версию вы используете, более поздние версии, такие как 2.7, имеют намного лучшую производительность с аннотацией ElementListUnion. –

ответ

0

Вы можете аннотировать класс (содержащий список), как это:

@Root 
public class Example 
{ 
    @ElementList 
    private List<Object> serializableList; 

    // ... 
} 

и классов (A, B и т.д.):

@Default 
public class A 
{ 
    // ... 
} 

(Или: класс с @Root и каждый элемент, который вам нужен, с @Element, @ElementList, ...)

С помощью этого способа вы можете разместить все необходимое в списке.

Смежные вопросы