2

为了在我的应用程序中执行一些 IO 操作,我编写了一个线程,它的 run 方法上没有任何内容,但它有几个其他方法,如 void write(String filename, String data) 和 void create(String filename),所有这些都有效像一个魅力。我的问题是,我曾经认为这个线程在后台运行或类似的东西,但是因为在我的主要活动中删除 .run() 语句后调用所述方法仍然有效,我怎样才能让一个线程运行并等待一个来自活动的消息而不阻止应用程序?第二个问题,由于这些方法仍在工作,这是否意味着当我从主要活动中调用它们时它们正在主 UI 线程上执行?

4

3 回答 3

3

您应该使用该start()方法,而不是run().

随着run()Runnable在调用线程中运行给定的。

随着start()你开始一个处理这个的新线程Runnable

于 2012-09-06T06:55:50.090 回答
2

对于在所述线程上运行的方法,您必须从该线程而不是从任何其他线程调用您的方法。

class WorkerThread extends Thread {
      public Handler mHandler;

      public void run() {
          Looper.prepare();

          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

          Looper.loop();
      }
  }

然后使用WorkerThread.mHandler.postRunnableorsendMesssage用于在另一个线程上完成的工作。

于 2012-09-06T06:56:58.303 回答
1

为了在交付时进行处理,您需要使用 android 的本机内容,这是可用的最佳选择:

  • 处理线程
  • 活套
  • 处理程序
  • 信息

例如,阅读thisthis

于 2012-09-06T06:57:40.130 回答