German Wie starten der App beschleunigen

Midimaster

Active Member
Licensed User
Meine App läuft bereits zufriedenstellend schnell auf meinem S10. Nun testete ich das ganze auf einem Tablet mit Android 4.4.

Die 100msec Startzeit werden hier zu lähmenden 15sec. In dieser Zeit geschieht nichts auf dem Bildschirm. d.h. hier muss ich irgendwie asynchron laden und dem User irgend ein Erlebnis bieten. Schön wäre, wenn alle 300msec etwas passiert.

Das Laden läuft derzeit in 4 Phasen ab:

1.Phase
Die App startet. Da vergehen gefühlt schon 10 sec.


2.Phase
Ich fordere einen 35MByte großen Byte-Stream aus dem AssetDir an. Das dauert schon weitere 10sec und besteht leider nur aus einem einzigen Befehl:
B4X:
    Private zeit As Long = DateTime.now
    Private buffer() As Byte
    buffer = File.ReadBytes(File.DirAssets,"MeineDaten.dat")
    Log("ZEIT nach buffer=" & (DateTime.now-zeit))
Später fordere ich ähnliche Streams aus dem DirInternal an. Gleiche Vorgehensweise

3.Phase
Dann folgt das Umkopieren in einen SHORT-Stream. Dauert nur 1sec. Ist aber auch nur ein Befehl.

B4X:
    Public Converter As ByteConverter
...
    Private Value() As Short
    Converter.LittleEndian=True
    Value=Converter.ShortsFromBytes(buffer)
    Log("ZEIT nach Converter=" & (DateTime.now-zeit))

4.Phase
Dann folgt ein Eintragen der Werte in ein Riesen-Array. Das dauert zwar weitere 4sec, aber ich kann es 20x unterbrechen, um dem User was zu zeigen.

Nun meine Fragen dazu.

1.
Wenn die App startet, vergehen gefühlt schon 10 sec. Hat das mit der 35MByte-Asset-Datei zu tun, oder ist die nach einer Installation bereits abgetrennt von der eigentlich ausführenden Datei?

2.
Ist es irgendwie möglich aus der 35MByte Asset-Datei zunächst nur die ersten 10000 Bytes zu lesen? Dann hätte ich schon mal genügend Informationen, um den heutigen Bildschirm für den User zu erstellen.

3.
Kann ich die 35MByte-Datei so lesen, das ich über ihren Fortschritt informiert werde?

4.
Wie kann ich den User informieren, ohne das Laden noc hweiter zu verzögern?

5.
Würdet ihr es ganz anders angehen?
 

Midimaster

Active Member
Licensed User
Diese Datei ist eine Audio-Datei mit 20 Einzelspuren, die alle gemeinsam abgespielt werden können. Ähnlich wie eine Multichannel-OGG-Datei. Hier kannst du ja auch nicht nur STEREO speichern, sondern bis zu 32 Tracks gleichzeitiger Musik speichern.

Für die Fragen 2 bis 4 habe ich bereits Lösungen gefunden. Jetzt muss ich nur noch herausfinden, ob eine 1MB-App schneller startet als eine 33MB-App. Ich dachte nur, hier wüsste das vielleicht jemand gleich. Aber ich kann es natürlich auch durch testen herausfinden.
 
Top