일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Trou aux Biches
- 두바이
- mauritius casela
- 모리셔스여행
- 프랑크푸르트 여행
- 경주 여행
- r
- 모리셔스
- 모리셔스리조트
- 모리셔스 카셀라
- duabi
- postgresql 설치
- postgresql 비밀번호 변경
- 느낌 사진
- bind9
- cloud foundry
- openstack
- 서울 야경
- Melbourne 여행
- 서울야경
- 트루오비쉬
- 모리셔스 여행
- mauritius
- 두바이여행
- 독일여행
- 톰캣 서비스 등록
- 모리셔스 카젤라
- Sony A850
- postgresql 비밀번호 초기화
- 경주
- Today
- Total
I.K.Picture & IT Info.
안드로이드 통신 HttpAsyncTask 본문
대부분 어플리케이션 제작시에 서버와 통신을 하기 위해서 HTTP 통신 프로토콜을 많이 사용되죠~?
안드로이드 어플리케이션 개발 시에도 과거(완전 옛날)에는 메인 스레드에서 바로 HTTP 통신이 가능했는데
언제부턴가 메인 스레드에서는 못하도록 막아놨죠..
그리고 제가 생각했을 때도 메인 스레드에서 통신을 한다는게 참.. 별로 좋지 않는 거 같구요~
그래서!! 별도 스레드를 생성하는 AsyncTask 라는 기존 클래스를 활용하는 방법을 포스팅하려 합니다 ^^
자 그럼 현재는 복잡하지 않게 간단한 방법으로 말씀을 드려볼께요
일단 자신이 원하는 프로젝트 패키지 않에 다음과 같은 클래스를 생성합니다.
(전 기본적으로 http 통신을 위한 asynctask 객체를 작성할 것이므로 클래스 이름을 HttpAsyncTask 라고 칭했습니다)
public class HttpAsyncTask extends AsyncTask<String, Integer, String>{ private Context context; public HttpAsyncTask(Context context){ this.context =context; } ... }
이렇게만 생성할 경우 unImplements 된 함수가 있다고 오류가 뜨게 됩니다.
이클립스를 사용하신다면 아마 간단하게 클릭으로 해결이될것이고 이 부분에서 생성되는 함수는 doInBackground 밖에 없지만... 그 외 추가할 수 있는 함수들은 다음과 같습니다.
@Override protected void onPreExecute() { ... } @Override protected void onProgressUpdate(Integer... progress){ ... } @Override protected String doInBackground(String... params) { return null; } @Override protected void onPostExecute(String str){ ... }
자 그럼 여기서 < > 안의 내용과 함수들을 정리해볼까요?
<String, Integer, String>
첫번째 값(String) : doInBackground 실행시 파라미터, (실제 Task가 구동시 인자값을 넘겨주는 것입니다) 두번째 값(Integer) : onProgressUpdate 실행시 파라미터, (doInBackground 가 돌면서 어떠한 이벤트시 onProgressUpdate를 호출할 수 있는데 그 때 넘겨주는 인자값) 세번째 값(String) : doInBackground 가 모두 완료되었을 때의 리턴 값 |
이 세개의 값들은 자신이 원하는 것으로 얼마든지 변경 가능합니다 ^^
자 그럼 아래 함수들은 무엇일까요?
onPreExecute |
스레드가 실행되기 직전 세팅 (젤 먼저 호출) |
onProgressUpdate |
스레드가 실행 중간 중간 호출 |
doInBackground |
실제 스레드가 실행되는 함수 |
onPostExecute |
스레드가 모두 실행 된 후 호출되는 함수 |
뭐 일단 간단하게 정리를 해 보았구요 저 같은 경우는 여기에다가 직접 구현을 하는 것이 아니라 이 클래스를 여러번 사용할 수 있도록
별도 모듈화 시켜노쿠 재활용 하고 있습니다.
왜냐구요? 워낙 길다보니... 기억하기가 쉽지 않더군요 ㅎㅎ;;
그래서 제가 만들어놓은 모듈은 별도로 github에다가 올려놓았습니다.
필요하신분들은 받아가시면될 것 같아요 ^^
그럼 이렇게 만들어놓은 모듈을 어떻게 사용하느냐!?
사용할 엑티비티에서 제가 만든 모듈 객체를 생성하면 되겠죠 ㅎㅎ?
public class MainActivity extends ActionBarActivity { ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HttpAsyncTask test = new HttpAsyncTask(MainActivity.this){ @Override protected String doInBackground(String... params) { super.doInBackground(params); String str = ""; //안에다가 http 통신 프로토콜 작성 return str; } @Override protected void onPostExecute(String str) { super.onPostExecute(str); } }; test.execute(""); } ... }
자 이런식으로 사용하시면 됩니다!
정확히 이해가 안되시는 분들은 아래 주소로 가셔서 소스코드를 다운받아서 한번 해보세요 ^^
'Development > Java/Android' 카테고리의 다른 글
Maven을 이용한 자바 API 문서 만들기 (0) | 2015.07.07 |
---|---|
Maven 프로젝트 이름 변경시 오류.. (0) | 2015.07.07 |
[ProgressBar] HttpAsyncTask 통신시 커스텀 프로그래스바 삽입 방법 (0) | 2014.08.15 |
[AdMob] 자신이 개발한 앱에 광고 붙이기. (20) | 2014.07.12 |
SharedPreference 사용 방법 (0) | 2014.04.22 |