実際に厳密に言えば、UI コードの実行順序はなく、asynctask を開始することがわかりました。通常、これは発生しませんが、何らかの理由で UI スレッドに時間がかかる場合 (外部入力の待機など) は、UI コードが終了する前に asynctask が開始された可能性があります。
UI コードの記述は、Android システムへの単なる要求であり、これは実行ループで待機します。したがって、十分なリソースがあるために asynctask がその前に開始された場合 (または前述のように、何らかの理由で UI スレッドが遅延した場合)、実行順序の保証はありません。
これを強制する簡単な方法の 1 つは、気にせず、それで十分であると確信できる場合に備えて、ScheduledExecutorService を使用して asynctask の開始を遅らせるか、「よりクリーンな」方法は、待機するある種のゲートキーパーを実装することです。フラグを true に設定してから、asynctask を開始します。または、外部デバイスとの多くの通信状況のように、フラグが true に設定されるのを待機する while ループが asynctask の開始時にある場合もあります。
フラグは、UI が完了したことを (通常は) 確信できるようになった後に true に設定されます。