Hallo,
Im Prinzip musst du den Aufruf deiner load_ini mit einem Wait For kombinieren. Das Wait For sorgt meinem Verständnis nach dafür, dass die Auführung der Create_Activity zunächst unterbrochen wird und damit die Kontrolle über die Verarbeitung an das Betriebssystem übergeben wird. (Das ist wichtig, damit lange laufende Operationen, z.B. eine Netzwerkkommunikation nicht die Verarbeitung blockiert.) Sobald das Ergebnis deiner load_ini vorliegt, wird an der Stelle mit dem Wait For die weitere Verarbeitung in der Create_Activity fortgesetzt.
Meine Erfahrung ist, dass ein Wait For allerdings nicht ausreicht. Stattdessen ist es besser, dass auf das Vorliegen des Ergebnisses explizit gewartet wird. Dazu muss die load_ini ein Ergebnis zurückliefern. Momentan ist load_ini bei dir eine Prozedur. Du musst daraus eine Funktion machen und mit dem Return einen Wert zurückliefern. Dann kannst du Wait For(load_ini) Complete (result As <Datentyp des Rückgabewertes>) schreiben. Beispielsweise so:
Sub Activity_Create(FirstTime As Boolean)
' ...
Wait For(load_ini) Complete (result As Int)
' ...
End Sub
Sub load_ini() As ResumableSub ' Rückgabewert vom Typ Int
'...
Return 1
End Sub
Oder alternativ entsprechend eines Vorschlags von Erel. (Ich finde den Post nicht mehr, wo er es vorgeschlagen hat.)
' Alterantiv der Vorschlag von Erel
Sub Activity_Create(FirstTime As Boolean)
' ...
Wait For(load_ini) Complete (result As Object)
' ...
End Sub
Sub load_ini() As ResumableSub ' Rückgabewert vom Typ Object
'...
Return Null
End Sub
Es gibt eine wichtige Stolperfalle: Sobald eine Prozedur oder Funktion als Resumable deklariert wurde, infiziert sie damit alle anderen Prozeduren und Funktionen, die sie aufrufen. Das bedeutet, erheblichen Aufwand falls man wiederverwendbare Funktionen hat. Außerdem macht der Compiler bei Funktionen keine Typprüfung des Rückgabewertes. Deshalb produzieren Resumable Subs leichter Laufzeitfehler.
Ich finde übrigens auch, dass trotz der vielen Beiträge und Erels Tutorials das Thema ansynchroner Programmierung mit Resumable Subs in B4X nicht gut verständlich ist.
Weiterhin viel Erfolg!
Thomas