如何在android中安全地停止线程?

时间:2010-11-19 06:43:22

标签: java android

如何安全地停止线程?

 downloadThread = new Thread(new Runnable() {

   @Override
   public void run() {

  });
  downloadThread.start();
 }

3 个答案:

答案 0 :(得分:3)

如果您使用Android sdk的AsyncTask,则可以找到cancel(),而不是使用普通线程来执行后台作业。

答案 1 :(得分:3)

中断线程。在线程的run()方法中,检查不同逻辑块末尾的isInterrupted()值。

例如,假设您的run()方法可以分为三个逻辑步骤   - 创建网络连接,下载图像并将图像保存到文件。在每个步骤结束时,检查isCancelled()并停止该操作,在该点停止所有状态。

class NetworkFetcherTask extends AsyncTask<String, Void, Void>{
    public void doInBackground(String... params){
       String url = params[0];

       //Open connection if not cancelled
       if(isCancelled()){
           conn.close();
           return;
       }
       NetworkConnection conn = new NetworkConnection();


       //Download the image if not cancelled
       if(isCancelled()){
           conn.close();
           result.discard();
           return;
       }
       NetworkResult result = conn.fetchUrl(url);
       conn.close();

       //Save the image to a file if not cancelled
       if(isCancelled()){
          result.discard();
          return;
       }
       File file = new File();
       file.dump(result);
    }
}

答案 2 :(得分:0)

最简单的似乎是将isRunning设置为false。