반응형
안녕하세요. 돼지왕 왕돼지입니다.
오늘은 비동기 다운로드( Async Download )에 대해 알아보죠.
왜 비동기 다운로드를 해야 하는데?
: 모바일 장비에서의 네트워크는 기본적으로 불확실성이 높고, 접속 상태도 신뢰성이 없어 에러 발생률이 높습니다. 따라서 네트워크 응용 프로그램은 섬세한 예외 처리가 필수입니다. 또 웹 요청은 시간이 오래 걸리는데, 그 동안에도 다른 작업을 할 수 있어야 하며 적어도 데이터 수신중임을 표시해야 합니다. 아니면 ANR이 발생하기 쉽기 때문입니다. 결국 네트워크 프로그램은 멀티 스레드로 작성하는 것이 필수라고 할 수 있죠.
코드좀 보여줘봐.
ProgressDialog mProgress;
DownThread mThread;
mProgress = ProgressDialog.show(.this, "Wait", "Downloading...");
mThread = new DownThread("http://www.google.com");
mThread.start();
class DownThread extends Thread{
String mAddr;
String mResult;
DownThread (String addr){
mAddr = addr;
mResult = "";
}
public void run(){
StringBuilder html = new StringBuilder();
try{
URL url = new URL(mAddr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
if (conn != null){
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK){
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
for(;;){
String line = br.readLine();
if (line == null) break;
html.append(line + '\n');
}
br.close();
mResult = html.toString();
}
conn.disconnect();
}
}
catch (Exception ex) { ; }
mAfterDown.sendEmptyMessage(0);
}
}
Handler mAfterDown = new Handler(){
public void handleMessage (Message msg){
mProgress.dismiss();
// To do
}
}
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] Progress Dialog sample code. (0) | 2012.02.18 |
---|---|
[Android/안드로이드] Network & Internet 에 대해 알아봅시다. (0) | 2012.02.18 |
[Android/안드로이드] web, internet에서 image 읽어오는 방법 + Cache. ( download, load ) (0) | 2012.02.18 |
[Android/안드로이드] DOM Parser ( 돔 파서 ) (0) | 2012.02.18 |
[Android/안드로이드] SAX Parser ( 삭스 파서 ) (6) | 2012.02.18 |
댓글