Sind alle Strings von strings.xml im Heapspeicher von Android immer verfügbar?

8

Angenommen, in einer Apk haben wir 1000 Strings in strings.xml.

Wenn wir diese App dann auf dem Gerät ausführen, sind alle Zeichenfolgen immer im Heapspeicher verfügbar. Oder sie werden in den Speicher geladen, wenn wir getString() Methode von Context aufrufen, um die Strings zu laden.

Sind alle Zeichenfolgen zur Laufzeit im Heap?

    
Sharad 25.10.2016, 07:10
quelle

1 Antwort

4

Das ist eine großartige Frage. Wir können versuchen, die Antwort zu finden, indem wir den Android-Quellcode studieren.

Alle Aufrufe von getString() werden an den folgende Methode in android.content.res.AssetManager :

%Vor%

loadResourceValue ist eine native Funktion und kann in android_util_AssetManager.cpp gefunden werden

Die native Methode ruft getResource() innerhalb der Klasse ResTable hier .

Der Konstruktor für ResTable ruft addInternal() hier auf Das liest die Ressourcen für jede Paket-ID in der App. Diese Tabelle wird später zur Suche von Ressourcen verwendet.

Um Ihre Frage zu beantworten, werden ja alle Zeichenfolgen (und tatsächlich alle Ressourcen) vom Dateisystem analysiert und in eine Nachschlagetabelle im nativen Heap geladen.

    
Nachi 27.10.2016, 10:33
quelle

Tags und Links