From a07a800470e95f506450d3b764e689af0ea9de1a Mon Sep 17 00:00:00 2001 From: REAndroid Date: Mon, 13 Mar 2023 08:50:57 -0400 Subject: [PATCH] make Type & Entry destroyable --- src/main/java/com/reandroid/arsc/array/EntryArray.java | 8 ++++++++ .../java/com/reandroid/arsc/array/TypeBlockArray.java | 8 ++++++++ src/main/java/com/reandroid/arsc/chunk/SpecBlock.java | 4 ++++ src/main/java/com/reandroid/arsc/chunk/TypeBlock.java | 5 +++++ .../java/com/reandroid/arsc/container/SpecTypePair.java | 4 ++++ 5 files changed, 29 insertions(+) diff --git a/src/main/java/com/reandroid/arsc/array/EntryArray.java b/src/main/java/com/reandroid/arsc/array/EntryArray.java index 97986c9..7dd0514 100755 --- a/src/main/java/com/reandroid/arsc/array/EntryArray.java +++ b/src/main/java/com/reandroid/arsc/array/EntryArray.java @@ -29,6 +29,14 @@ public class EntryArray extends OffsetBlockArray implements JSONConvert public TypeBlockArray(){ super(); } + public void destroy(){ + for(TypeBlock typeBlock:listItems()){ + if(typeBlock!=null){ + typeBlock.destroy(); + } + } + clearChildes(); + } public void sort(){ sort(this); } diff --git a/src/main/java/com/reandroid/arsc/chunk/SpecBlock.java b/src/main/java/com/reandroid/arsc/chunk/SpecBlock.java index 5b86f52..3aaf081 100755 --- a/src/main/java/com/reandroid/arsc/chunk/SpecBlock.java +++ b/src/main/java/com/reandroid/arsc/chunk/SpecBlock.java @@ -32,6 +32,10 @@ this.specFlagsArray = new SpecFlagsArray(header.getEntryCount()); addChild(specFlagsArray); } + public void destroy(){ + setParent(null); + getSpecFlagsArray().clear(); + } public SpecFlag getSpecFlag(int id){ return getSpecFlagsArray().getFlag(id); } diff --git a/src/main/java/com/reandroid/arsc/chunk/TypeBlock.java b/src/main/java/com/reandroid/arsc/chunk/TypeBlock.java index 261d14a..750c88c 100755 --- a/src/main/java/com/reandroid/arsc/chunk/TypeBlock.java +++ b/src/main/java/com/reandroid/arsc/chunk/TypeBlock.java @@ -52,6 +52,11 @@ public class TypeBlock extends Chunk addChild(entryOffsets); addChild(mEntryArray); } + public void destroy(){ + getEntryArray().destroy(); + setId(0); + setParent(null); + } public boolean removeNullEntries(int startId){ startId = 0x0000ffff & startId; EntryArray entryArray = getEntryArray(); diff --git a/src/main/java/com/reandroid/arsc/container/SpecTypePair.java b/src/main/java/com/reandroid/arsc/container/SpecTypePair.java index 0a1facc..e41f22a 100755 --- a/src/main/java/com/reandroid/arsc/container/SpecTypePair.java +++ b/src/main/java/com/reandroid/arsc/container/SpecTypePair.java @@ -53,6 +53,10 @@ public class SpecTypePair extends BlockContainer public SpecTypePair(){ this(new SpecBlock(), new TypeBlockArray()); } + public void destroy(){ + getSpecBlock().destroy(); + getTypeBlockArray().destroy(); + } public Entry getAnyEntry(String name){ for(TypeBlock typeBlock:listTypeBlocks()){ Entry entry =typeBlock.searchByEntryName(name);