1

asyncTask で Looper を使用するにはどうすればよいですか?

doImBackground メソッドを呼び出して、MyResultTable という TableLayout をプログラムで作成します。MyResultTable には、onTouch 中に呼び出されるハンドラがありMotionEvent.ACTION_MOVEます。

asynchTask 内でのハンドルの使用に関する苦情を受けた後、UIThread でハンドラーを実行することにしました。しかし、それが原因で onTouch メソッドの応答が遅くなります。私の質問は、asyncTask でルーパーを使用するにはどうすればよいですか?

UIThread コード:

activity.runOnUiThread(new Runnable() {
  public void run() {
handler.post(mResizeViews);
  }
});

私のルーパーの試み: (動作していません: 空白の画面)

protected MyResultTable doInBackground(Void... params) {
            Looper.prepare();
            MyResultTable table = new MyResultTable(context, other);
            Looper.loop();
            return tabl;
        }
4

1 に答える 1

3

asyncTask で Looper を使用するにはどうすればよいですか?

あなたはしません。

doImBackground メソッドを呼び出して、MyResultTable という TableLayout をプログラムで作成します。

それは にふさわしい役割ではありませんdoInBackground()doInBackground()ネットワーク I/O、ディスク I/O などの処理が遅い場合に使用onPostExecute()doInBackground()ます。

次に、MyResultTable には、MotionEvent.ACTION_MOVE 中に onTouch によって呼び出されるハンドラーがあります。

それはあまり意味がありません。を使用しHandlerて、バックグラウンド スレッドからメイン アプリケーション スレッドにイベントを転送します。YouronTouchEvent()はメイン アプリケーション スレッドで呼び出されるため、Handler.

于 2013-08-04T21:08:07.923 に答える