AsyncTask를 사용하여 파일을 다운로드하고 있습니다. 그러나 파일을 다운로드하는 동안 UI가 고정되고 뭔가를 수행 할 수 있도록 파일 다운로드가 완료 될 때까지 기다려야합니다. 다른 스레드를 찾았지만 .get()
을 사용하여 작업을 실행하는 것과 같은 문제 만 발견했습니다. 는 여기에 내가Assync 작업 고정 UI
new DownloadFileFromUrl().execute("url");
여기에 내가이 끝난 때 모니터에 Done!
을 보내도록했습니다
class DownloadFileFromURL extends AsyncTask<String, Integer, LineData> {
String fileDir = getApplicationContext().getFilesDir() + "/data.txt";
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected LineData doInBackground(String... f_url) {
int count;
//Download file--------------------------
try {
URL url = new URL(f_url[0]);
URLConnection conection = url.openConnection();
conection.connect();
int lenghtOfFile = conection.getContentLength();
InputStream input = new BufferedInputStream(url.openStream(),
8192);
OutputStream output = new FileOutputStream(fileDir);
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress((int) total * 100/lenghtOfFile);
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {
Log.e("Error: ", e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(LineData data) {
setDataFor24Hours();
setDataFor48Hours();
setDataFor72Hours();
showDataFor24Hours();
setList();
Log.e("Downloader: ", "done!");
}
}
AsyncTask를을 년대 AsyncTask를 호출하고있어 방법은,이 순간에 UI는 고정 해제 얻는다 또한 문제는 AsyncTask에 있습니다. 누구든지 나를 도울 수 있기를 바랍니다. 미리 감사드립니다!
* UI가 고정되어 있지 않습니까? 즉, 사용자 클릭이 발생하지 않았습니까? – kujeensiti
장기 실행 작업은 호스팅 활동 또는 단편에 대한 의존성과 같은 여러 가지 이유로 실제로 AsyncTask를 사용하지 않아야합니다. 백그라운드에서 실행되고 활동이나 프래그먼트와 독립적으로 실행되는 서비스를 시도해야합니다. – Eenvincible
결과 유형이'LineData'로 정의되었지만'doInBackground()'에서'null '을 리턴하는 이유는 무엇입니까? –