如何在不阻止app的情况下保持线程活着?

时间:2012-09-06 06:51:00

标签: android multithreading

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

3 个答案:

答案 0 :(得分:3)

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

使用run(),您正在调用线程中运行给定的Runnable

使用start(),您将启动一个处理此Runnable

的新线程

答案 1 :(得分: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.postRunnablesendMesssage在另一个主题上完成工作。

答案 2 :(得分:1)

为了在交付时处理内容,你需要使用android的本机内容,这是最好的选择:

  • HandlerThread
  • 活套
  • 处理程序
  • 消息

例如,请阅读thisthis