package com.andro;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class BookmarkDetailActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.query_detail);
// TODO Auto-generated method stub
// 웹문서 소스 출력영역 인식
TextView et_webpage_src = (TextView) findViewById(R.id.website_detail);
// 정보를 추출할 인텐트의 생성
Intent it = getIntent();
// 인텐트로부터 send_name의 값을 추출함
String str_name = it.getStringExtra("it_name");
String name = "";
URL url = null;
HttpURLConnection urlConnection = null;
BufferedInputStream buf = null;
try {
// DBManager 객체 생성(DB 존재 않으면 생성)
DBManager dbmgr = new DBManager(BookmarkDetailActivity.this);
// DB연결
SQLiteDatabase sdb = dbmgr.getReadableDatabase();
// SQL문 실행 결과를 cursor 객체로 받음
Cursor cursor = sdb.rawQuery(
"select waddress from websites where wid='" + str_name
+ "' ", null);
// cursor객체로 할당된 테이블 데이터를 한 행씩 이동하면서
if (cursor.moveToNext()) {
String address = cursor.getString(0);
url = new URL(address);
}
// /// URL 지정과 접속
// 웹서버 URL 지정
// URL 접속
urlConnection = (HttpURLConnection) url.openConnection();
// /// 웹문서 소스를 버퍼에 저장
// 데이터 다운로드
buf = new BufferedInputStream(urlConnection.getInputStream());
// 데이터를 버퍼에 기록
BufferedReader bufreader = new BufferedReader(
new InputStreamReader(buf, "euc-kr"));
String line = null;
String page = "";
// 버퍼의 웹문서 소스를 줄 단위로 읽어(line), page에 저장함
while ((line = bufreader.readLine()) != null) {
page += line;
}
// 웹문서 소스의 출력
et_webpage_src.append(page);
// cursor 객체 닫음
cursor.close();
// dbmgr 객체 닫음
dbmgr.close();
} catch (SQLiteException e) {
// DB 접속 또는 조회 시 에러 발생 할 때 (생략)
} catch (Exception e) {
// 예외사항 출력
et_webpage_src.append(e.getMessage());
} finally {
// URL 연결 해제
urlConnection.disconnect();
}
// ID가 button_back인 버튼 초기화
Button btn_back = (Button) findViewById(R.id.button_back);
// 버튼 클릭 대기
btn_back.setOnClickListener(this);
}
// 뒤로가기 버튼이 클릭 되었을 때
public void onClick(View v) {
Intent it = new Intent();
// 현재 클래스에서 호출할 클래스 지정
it = new Intent(this, TabViewActivity.class);
// 인텐트에서 지정한 액티비티 실행
startActivity(it);
// 현재 액티비티 종료
finish();
}
}
안녕하세요. 안드로이드 생 초짜입니닷
위의 상태로 앱을 실행하면, Url에서 다운받는 속도때문에 앱이 잠시 멈추게 되어버려서
스래드를 사용하면 액티비티는 바로 바뀌고 웹사이트의 소스코드를 읽어오는동안
프로그래스바를 보여주면 된다고 그래서
어디서 주워들은건있어서 AsyncTask를 사용해서 해보려고 노력은 해봤는데,
이거저거 다 찾아봐도 AsyncTask에 대해 이해가 잘 되지가 않더라구요..
위의 소스를 AsyncTask를 사용해서 프로그래스바를 보여주는 방법이 없을까요?
꼭 AsyncTask가 아니라 다른 방법도 괜찮습니다.