Irgendwie habe ich die Systematik von Firemonkey bezüglich synchroner und asynchroner Ausführung von Code in Android noch nicht durchschaut.
Beispiel 1 (Pseudocode)
Delphi-Quellcode:
settings:= tMySettings.create; //Erstellt eine Klasse, setzt Standartproperties oder wenn vorhanden liest inidatei ein und füllt die Properties
loadlanguage(settings.language); //unter android32 ist settings noch nicht initialisiert, in android 64 dagegen schon
oder Beispiel 2
Delphi-Quellcode:
if checkinput(edit1.text) then
machwasmitmitdeminput; //funktioniert unter Android 64, funktioniert manchmal, manchmal nicht unter Android 32
Ja, ich kann die Probleme lösen
Delphi-Quellcode:
settings:= tMySettings.create;
TThread.ForceQueue(
nil,
procedure
begin
loadlanguage(settings.language);
end );
oder
ok:= checkinput(edit1.text);
TThread.ForceQueue(
nil,
procedure
begin
if ok them macheetwas mit dem Input;
end );
Frage: Unter welchen Umständen wird der Code synchron oder asynchron durchgeführt?
Ich selbst habe noch kein Muster gefunden und irgendwie ist es mir der Aufwand zu gross prohpylaktisch jeden Funktionsaufruf mit forcequeue zu kapseln.