私は検索(stackoverflow、google)の問題があり、まだ良い結果は得られませんでした。私はスレッド内に簡単なダウンローダを書いた。それは(ダウンローダ)私の希望のファイルをダウンロードし、私のアンドロイド携帯電話のストレージに保存します。今私はクラス内でメソッドを使ってダウンロードを止めたいと思っています。言い換えれば、私はダウンローダスレッドを止めたいと思う。以下は私のコードです。これはどうすればできますか? 私を案内してください。宜しくお願いします。私の例でスレッドを停止する方法
package com.test;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
Thread thread;
Handler handler = new Handler();
TextView txt;
boolean first = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
txt = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (first) {
Downloader downloader = new Downloader("http://192.168.43.131/and/filmLow3.mp4");
first = false;
} else {
if (!thread.currentThread().isInterrupted()) {
thread.interrupt();
}
}
}
});
}
public class Downloader {
int downloaded = 0;
public Downloader(final String link) {
thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL(link);
HttpURLConnection connection;
connection = (HttpURLConnection) url.openConnection();
connection.connect();
final int size = connection.getContentLength();
InputStream inputStream = connection.getInputStream();
FileOutputStream outputStream = new FileOutputStream(Base.appPath + "file.mp4");
byte[] buffer = new byte[8 * 1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
downloaded += len;
outputStream.write(buffer, 0, len);
handler.post(new Runnable() {
@Override
public void run() {
txt.setText(downloaded/1024/1024 + " MB || " + size/1024/1024 + " MB");
}
});
}
inputStream.close();
outputStream.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
}
}
https://stackoverflow.com/questions/19894607/java-how-to-stop-thread https://stackoverflow.com/questions/2491588/how-a-thread-should- close-itself-in-java – XtremeBaumer
whileループ状態がfalseになると、スレッドは停止しませんか? – Arjit
停止します。しかし、私はそれをダウンロード中とループの中で停止したい。 – Hadi