안드로이드에서 DB를 사용하려면 바로 접근할 수 없고, 웹서버를 통해 데이터를 주고 받을 수 있다.
나는 웹서버는 톰캣(jsp로), DB는 오라클을 사용하였다. 코드는 구글링을 통해서 구할 수 있었고, 적용하는데 오라클과 서버를 연동하는 부분에서 자꾸 에러가 떠서 오라클을 재설치 하는데 시간이 좀 걸린것 빼고는 어렵지 않게 연동할 수 있었다.
단순히 연동만 한 상태이므로 이제 이 코드를 이해하는데 필요한 지식들을 다음과 같이 정리하였다.
1. Manifest.xml에 인터넷 권한 추가
<manifest></manifest>안에 다음 코드를 추가해준다.
<uses-permission android:name="android.permission.INTERNET"/>
2. 안드로이드 AsynkTask클래스
AsynkTask는 자바에서 쓰레드와 같다. → 자바에서 쓰레드 사용 이유
AsynkTask클래스는 메인 스레드 이외에 작업 처리를 하는 별도의 스레드를 제공한다. 메인스레드에서 생성 후 실행(execute()메서드)되며, 메인 스레드에서 처리시간이 오래 걸리는 작업을 백그라운드 스레드로 넘기고 계속 메인스레드 작업을 진행하기 위해 사용된다. 백그라운드 스레드는 작업 처리 중 메인 스레드에서 처리하는 UI작업에 영향을 주지 않기 때문에 UI가 늦게 뜨는 등의 일이 발생하지 않는다.
AsyncTask의 파라메터 타입 <String, Void ,String>
Params: AsyncTask를 시작하기 위해 execute() 메소드가 호출될 때 적절한 인자를 doInBackground메소드에서 파라메터로 전달받는다.
Progress: doInBackground메소드에서 백그라운드 처리 중에 publishProgress 메소드를 호출하여 전달한 인자를 onProgressUpdate메소드에서 파라메터로 받게 된다.
Result: doInBackground메소드에서 리턴한 값을 onPostExecute메소드에서 파라메터로 받게 되는데, 이 때 사용되는 타입니다.
AsyncTask의 메소드
AsyncTask를 상속받은 서브 클래스에서는 최소한 doInBackground메소드를 오버라이딩 해주어야 한다.
onPreExecute(): UI스레드상에서 실행되며 doInBackground메소드 전에 호출된다.
doInBackground(Params...): 이 메소드에 포함된 코드는 백그라운드 스레드 상에서 처리되며 이곳에서 UI처리를 하면 안된다. AsyncTask의 execute메소드를 호출시 전달한 인자를 파라메터로 받는다. 리턴한 값은 onPostExecute메소드에서 파라메터로 받는다.
onProgressUpdate(Progresss...): 백그라운드 스레드에서 작업 중에도 메인 스레드에게 UI처리 요청을 쉽게 할 수 있다.
doBackground메소드에서 publishProgress 메소드를 호출함으로써 UI 스레드상에서 실행된다. 백그라운드 스레드에서 작업 처리 중에 프로그레스바 진행 상태 업데이트 같은 UI작업이 필요한 경우 publishProgress메소드를 호출한 후 onProgressUpdate메소드에서 UI작업을 한다. publishProgress메소드에서 인자로 전달한 값을 파라메터로 받는다.
onPostExecute(Result): 백그라운드 스레드에서 작업 종료 후, 결과를 메인 스레드에게 통보해준다.
UI스레드 상에서 실행되며 doInBackground메소드 종료 후 호출된다. doInBackground메소드에서 리턴한 값을 onPostExecute메소드에서 파라메터로 받는다. doInBackground에서 작업하는 동안 보여주던 프로그레스바를 감추는 작업같은 UI작업을 할 수 있다.
Reference
개념
https://rain483.blog.me/220794072956
https://webnautes.tistory.com/1082
실습
3. HttpUrlConnection
안드로이드와 jsp가 데이터를 주고받을때 사용한다. HttpUrlConnection은 안드로이드에서 지원해주는 API이다.
4. 버튼 클릭 이벤트를 처리하는 방법
버튼을 눌렀을 때 발생할 수 있는 클릭 이벤트를 처리하기 위해 리스너(Listener)를 사용한다. 버튼에서 발생할 수 있는 클릭 이벤트는 부모 클래스인 View클래스에 이미 정의되어 있다.
클릭 이벤트 발생시 onClickListener객체를 new로 생성한 다음, setOnclickLister()함수를 호출하여 이벤트를 지정하면 된다.
Reference
'안드로이드 > 안드로이드 with Java' 카테고리의 다른 글
안드로이드 스튜디오에 이미 생성된 외부 sqlite디비 불러오기(엑셀cvs파일) (0) | 2019.08.18 |
---|---|
[안드로이드 스튜디오/에러] failed to notify build listener 및 cause: org.jetbrains.plugins.... (0) | 2019.07.23 |
[안드로이드 스튜디오] Gradle version과 Android Plugin Version 확인하기 (0) | 2019.07.23 |
안드로이드 스튜디오에서 깃허브 연동해서 프로젝트 올리고 받기 (0) | 2019.07.23 |
안드로이드 공부방향 (0) | 2019.07.15 |