5

Android の UI スレッドだけが UI を更新できる理由を教えてください。他のスレッドが UI を更新できないのはなぜですか?

4

2 に答える 2

9

ドキュメントには、Android UI ツールキットはスレッドセーフではないと記載されています。したがって、シングル スレッド モデルにより、UI が異なるスレッドによって同時に変更されることはありません。

于 2011-10-12T16:23:01.150 に答える
3

Thread に関するアンドロイド開発者ガイドに記載されているように:

アプリがユーザーの操作に応じて集中的な作業を実行する場合、アプリケーションを適切に実装しない限り、このシングル スレッド モデルではパフォーマンスが低下する可能性があります。具体的には、UI スレッドですべてが発生している場合、ネットワーク アクセスやデータベース クエリなどの長時間の操作を実行すると、UI 全体がブロックされます。スレッドがブロックされると、描画イベントを含め、イベントをディスパッチできなくなります。ユーザーの観点からは、アプリケーションがハングしているように見えます。さらに悪いことに、UI スレッドが数秒以上 (現在は約 5 秒) ブロックされている場合、ユーザーには悪名高い「アプリケーションが応答していません」(ANR) ダイアログが表示されます。その後、ユーザーはアプリケーションを終了し、不満がある場合はアンインストールすることを決定する可能性があります。

さらに、Andoid UI ツールキットはスレッドセーフではありません。したがって、ワーカー スレッドから UI を操作してはなりません。UI スレッドからユーザー インターフェイスに対するすべての操作を行う必要があります。したがって、Android のシングル スレッド モデルには 2 つのルールがあります。

UI スレッドをブロックしない UI スレッドの外部から Android UI ツールキットにアクセスしない

于 2011-10-12T16:21:12.160 に答える