1

我如何将 Looper 与 asyncTask 一起使用?

调用 doImBackground 方法以编程方式创建一个名为 MyResultTable 的 TableLayout。反过来,MyResultTable 有一个处理程序,由 onTouch 期间调用MotionEvent.ACTION_MOVE

在收到有关在 asynchTask 中使用句柄的投诉后,我决定在 UIThread 上运行处理程序。但这导致我的 onTouch 方法响应缓慢。所以我的问题是,如何将循环器与 asyncTask 一起使用?

UI线程代码:

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

我的 Looper 尝试:(不工作:空白屏幕)

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

1 回答 1

3

我如何将 Looper 与 asyncTask 一起使用?

你不会的。

调用 doImBackground 方法以编程方式创建一个名为 MyResultTable 的 TableLayout。

这不是doInBackground(). 用于doInBackground()缓慢的事情:网络 I/O、磁盘 I/O 等。onPostExecute()用于根据检索到的数据生成 UI(“名为 MyResultTable 的 TableLayout”)doInBackground()

反过来,MyResultTable 有一个处理程序,在 MotionEvent.ACTION_MOVE 期间由 onTouch 调用。

这没有多大意义。您使用 aHandler将事件从后台线程转发到主应用程序线程。您onTouchEvent()在主应用程序线程上被调用,因此它不需要Handler.

于 2013-08-04T21:08:07.923 回答