Android--비동기 임무 AsyncTask
인 스 턴 스:비동기 작업 을 사용 하여 네트워크 에서 다운로드 합 니 다.
package com.example.xiaocool.anysctaskdemo;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URLConnection;
public class MainActivity extends ActionBarActivity {
private TextView show;
private Button download;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
show = (TextView) this.findViewById(R.id.show_down);
download = (Button) this.findViewById(R.id.button);
download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DownTask task = new DownTask(MainActivity.this);
try {
/**
*
*/
task.execute(new URI("http://news.baidu.com/"));
} catch (Exception E) {
E.printStackTrace();
}
}
});
}
/**
* Params
* Progress ,
* Result
* Void
* <p/>
*
*/
class DownTask extends AsyncTask<URI, Integer, String> {
ProgressDialog progressDialog;
//
int hasRead = 0;
Context mContext;
public DownTask(Context context) {
mContext = context;
}
/**
* , publishProgress(Progress value)
*
* @param params
* @return
*/
@Override
protected String doInBackground(URI... params) {
StringBuilder sb = new StringBuilder();
try {
URLConnection conn = params[0].toURL().openConnection();
// conn , BufferReader
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "utf-8")
);
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + "
");
hasRead++;
//
publishProgress(hasRead);
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* doInBackground publishProgress(Progress value), ,
*
* @param values
*/
@Override
protected void onProgressUpdate(Integer... values) {
show.setText(" "+values[0]);
progressDialog.setProgress(values[0]);
}
/**
* , ,
*/
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(mContext);
progressDialog.setTitle(" !");
progressDialog.setMessage(" , !!");
//
progressDialog.setCancelable(false);
progressDialog.setMax(202);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setIndeterminate(false);
progressDialog.show();
}
/**
* doInBackground , doInBackground()
*
* @param s
*/
@Override
protected void onPostExecute(String s) {
// HTML
show.setText(s);
progressDialog.dismiss();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.