1

My Widget には、ウィジェット内に左右のナビゲーション用の 2 つのボタンがあります。データのセットがある場合は、左右の矢印ボタンを使用してデータを切り替えます。データを更新するために、毎分 Http 呼び出しを行います。http 呼び出しが戻るのに時間がかかる場合、ボタンのクリックが蓄積され始め、7 ~ 8 秒の一時停止の後、突然連続して起動されます。ボタンに pendingIntents を使用し、ウィジェットのブロードキャスト レシーバーで受信しています。

HTTP 呼び出しが高速な場合、ボタンのクリックは正常に機能します。

しかし、HTTP 呼び出しの戻りが遅く、右矢印を 10 回クリックすると、何も起こらず、7 ~ 8 秒後に 10 回のクリックが瞬時に発生します。

ボタンのクリックがブロックされてから連続して起動されるのを防ぐ方法を提案してください。

HTTP 呼び出しの遅さが、ボタンがスタックする本当の理由ですか?

4

2 に答える 2

1

UI スレッドから HTTP 呼び出しを行うべきではないため、必ず AsyncTask を使用して I/O またはネットワーク操作を実行してください。

非同期タスク

于 2012-12-13T17:16:16.077 に答える
0

おそらく、HTTP リクエストは他のネットワーク タスクや I/O タスクと同様に時間がかかる可能性があるため、UI スレッドで HTTP リクエストを実行することはお勧めできません。Android はこれを検出し、ユーザーに ANR メッセージ (アプリ) を提示する可能性があります。応答しない)、アプリを強制終了するかどうかをユーザーに尋ねます。

onclick イベントが発生する ASyncTask 内で HTTP 要求を実行する必要があります。このようにして、HTTP 用の新しいスレッドが作成される一方で、ユーザー インターフェイスはロックする代わりにユーザー入力の動作と受け入れを続行できます。

于 2012-12-13T17:40:21.137 に答える