Ich habe Probleme mit Suchen (stackoverflow, google) und ich habe noch keine guten Ergebnisse erhalten. Ich habe einen einfachen Downloader in Thread geschrieben. Es (Downloader) lädt meine gewünschte Datei herunter und speichert sie in meinem Android-Telefonspeicher. Jetzt möchte ich den Download mit einer Methode innerhalb meiner Klasse stoppen. Mit anderen Worten möchte ich Downloader Thread stoppen. Folgendes ist mein Code. Wie kann ich das jetzt tun? Bitte führen Sie mich. Freundliche Grüße.Wie man einen Thread in meinem Beispiel stoppt
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-iss-in-java – XtremeBaumer
Ihr Thread hört nicht auf, wenn die While-Schleife falsch wird? – Arjit
es stoppt. Aber ich möchte es beim Herunterladen und innerhalb der Schleife stoppen. – Hadi