10.1ベルリンでうまくいきましたが、デルファイ10.2.1東京での作業をやめたアンドロイドのモーダルメッセージを表示するためのDelphiコードがあります。この手順でAndroidアプリがハングアップするようになりました。Delphi 10.2.1東京を使用したモーダルアンドロイドダイアログ
procedure customShowMessage(AMessage: string);
//good idea to have our own procedure that we can tweak, as even for VCL and windows, we have done show message differently over the years due to all sorts of funny problems
var
LModalWindowOpen: boolean;
begin
LModalWindowOpen := true;
TDialogService.MessageDialog(AMessage, TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0,
procedure(const AResult: TModalResult)
begin
LModalWindowOpen := false;
end);
while LModalWindowOpen do
begin
Application.ProcessMessages; //since 10.2 Tokyo, popup never shows and this loops forever
end;
end;
メインスレッドでのアプリの動作については、東京の変更と関係している可能性があります。 Application.ProcessMessagesを何に置き換えることができるかわからないので、ユーザーが何かをクリックできるようにダイアログが表示されます。
私はこれが使用されている場所が多いので、コールバックを使用して作業するように変更すると、多くの作業と再構築が行われます。
東京でAndroid上で 'Application.ProcessMessages()'が壊れています(他にも多くのアップデートがありますが、最新のアップデートがインストールされていますか?)。しかも、モーダルダイアログはAndroidではサポートされていません。 Embarcaderoのドキュメントには多くのことが書かれています。 FMXはこれに対処するためにXE5以降の非同期ダイアログをサポートしています。非同期で動作するようにこのコードを書き直す必要があります。 'ProcessMessages'ループを取り除き、ダイアログが閉じられたときにそれを通知させます。ダイアログが閉じるのを待っている呼び出しスレッドをブロックしないでください。これを適切に処理する方法です。あなたはこれを無視してはいけません。 –
ありがとうございます、私は更新を再度確認しました。現在利用可能な修正プログラムはTokyo 10.2用です。私は東京10.2アップデートの最新インストーラを使用しました。長期的な解決策は、コールバックを使用するように変更するように見えます。 – Maya