본문 바로가기

Android/Concepts51

SQLiteOpenHelper 사용하여 DB 수정하기 SQLiteOpenHelper란? 많은 수의 사용자가 사용하고 있어 저장된 데이터의 양이 많을 때, 테이블을 수정하려면 어떻게 해야 할까? 사용중인 테이블의 column을 수정하거나 테이블을 삭제하는 것은 어려운 작업이다. SQLiteOpenHelper는 이런 상황에서 테이블의 수정, 삭제를 도와준다. 새로운 기능을 앱에 추가하려 테이블 구조와 코드를 수정했는데, 사용자가 앱을 업데이트 하지 않았다면 수정된 테이블과 테이블에 접근하는 코드가 맞지 않아 오류가 발생할 수 있다. 이 때 SQLiteOpenHelper를 통해 버전 관리를 해 코드 상태에 맞춰 db 구조를 변경할 수 있다. 예를 들어 DB와 소스코드를 모두 version1에서 version2로 수정했을 때, SQLiteOpenHelper를 통해.. 2020. 5. 1.
SQLite DB에 데이터 저장하기 Database란? 어플리케이션의 데이터를 저장할 때 서버를 통해 저장할 수도 있지만, 기기에 저장할 수도 있다. 안드로이드에서는 SharedPreference를 사용하여 (key,value) 형태로 데이터를 저장할 수 있는 기능을 제공한다. 하지만 단순한 형태로만 저장할 수 있기 때문에 복잡한 데이터를 저장하기에는 불편함이 따른다. 이 때, Database를 사용하면 더 체계적인 형태로 데이터를 저장할 수 있다. 안드로이드에서는 SQLite라는 임베디드 데이터베이스를 사용한다. SQLite는 관계형 데이터베이스로 Table의 형태로 데이터를 저장하며 SQL문을 통해 기능을 수행한다. 따라서 관계형 데이터베이스에 대한 지식과 SQL 문법에 대한 기본적인 지식이 필요하다. 그 내용은 아래 글을 참고하자. .. 2020. 5. 1.
Glide 라이브러리 사용법 Glide란? 서버로부터 이미지를 받아오는 것은 여러가지 방법이 있다. 기본적으로 비트맵을 직접 받아와 띄워줄 수도 있지만 이 경우 직접 처리해야 할 것이 많다. 자세한 방법과 내용은 아래 글 참고. https://ju-hy.tistory.com/68 서버로부터 Bitmap 이미지 받아오기 HttpURLConnection이나 Volley 라이브러리를 이용하여 http 통신으로 서버로부터 데이터를 받아올 수 있다. 하지만 이미지의 경우 용량이 크기 때문에 다른 데이터와 구분하여 다른 방식으로 받는 것이 ju-hy.tistory.com 따라서 구글에서는 이미지를 불러오고 관련 작업을 편하게 수행할 수 있도록 Glide 라이브러리를 제공하고 있다. https://github.com/bumptech/glide .. 2020. 4. 30.
서버로부터 Bitmap 이미지 받아오기 HttpURLConnection이나 Volley 라이브러리를 이용하여 http 통신으로 서버로부터 데이터를 받아올 수 있다. 하지만 이미지의 경우 용량이 크기 때문에 다른 데이터와 구분하여 다른 방식으로 받는 것이 효율적이다. 따라서 이미지를 별도의 url로 전달받아 해당 url을 통해 별도로 다운로드하여 사용하게 된다. 요즘에는 이미지 파일을 다운로드 할 때 여러가지 편리한 기능을 제공하는 라이브러리들을 사용한다. UniversalImageLoader 나 Glide 라이브러리를 사용하면 다운로드 및 캐싱까지 자동으로 처리해준다. 하지만 이 글에서는 기본적으로 제공되는 URL의 openConnection을 이용하여 직접 이미지를 다운로드하여, BitmapFactory를 이용하여 Bitmap으로 변환하고,.. 2020. 4. 27.
Gson을 이용하여 Json 파싱하기 Json이란? 서버에 요청을 보내고 응답을 받는 과정에서 String 데이터를 주고받게 된다. 이 때 단순한 String 데이터가 아닌 여러 종류의 데이터를 String 형태로 전달하기 위한 형식이 Json이다. 정해진 규칙대로 데이터를 문자열로 바꾸고, 문자열을 다시 데이터로 바꿈으로써 복잡한 데이터를 전송할 수 있다. Json 문자열은 다음과 같은 규칙을 따른다. 1. key와 value의 값은 각각 큰따옴표( " " )로 감싸며 콜론( : )으로 구분한다. (value 값은 기본적인 자료형 뿐만 아니라 Json 객체 혹은 배열도 가능) 2. 객체는 중괄호( { } )로 감싸며, 데이터들은 콤마( , )로 구분한다. 3. 배열은 대괄호( [ ] )로 감싸며, 데이터들은 콤마( , )로 구분한다. Gs.. 2020. 4. 27.
Volley 라이브러리 사용법 Volley란? 앱에서 서버와 http 통신을 할 때 HttpURLConnection을 사용하면 직접 요청과 응답을 받는 것이 가능하다. 하지만 직접 쓰레드를 구현해야 하며, 기본적인 코드 양 또한 많아 코드가 복잡해진다는 단점이 있다. 그래서 안드로이드에서는 쉽고 빠른 http 통신을 위해 Volley 라이브러리를 제공하고 있다. 코드가 간결해진다는 점 외에도 다음과 같은 여러가지 장점들이 있어 http 통신에 많이 사용된다. Volley 라이브러리는 다음과 같이 동작한다. 사용자가 Request 객체에 요청 내용을 담아 RequestQueue에 추가하기만 하면, RequestQueue가 알아서 쓰레드를 생성하여 서버에 요청을 보내고 응답을 받는다. 응답이 오면 RequestQueue에서 Request.. 2020. 4. 26.
HttpURLConnection을 이용한 HTTP 통신 HTTP 통신이란? HTTP란 HyperText Transfer Protocol의 약자로 서버와 클라이언트 간 통신에 사용되는 규약이다. 소켓을 이용한 TCP/IP 통신을 기반으로 수행되지만, 거기에 HTTP 규약이 추가된 형태로 수행된다. HTTP request와 response는 데이터의 정보를 담는 Header, 데이터를 담는 Body 부분으로 구성된다. Header의 정보들은 개행(\r\n)으로 구분되며 개행이 두번 되는 지점부터 Body가 시작된다. Request와 Response의 세부적인 구성은 다음과 같이 정의되어 있다. Request Format Response Format HttpURLConnection 사용법 간단하게 네이버 홈페이지에 request를 보내는 과정을 구현해보자. 코드를.. 2020. 4. 25.
Socket을 이용한 서버와 클라이언트 통신 네트워킹이란? 요새는 인터넷을 사용하지 않는 앱을 찾기 힘들 정도로 거의 모든 앱에서 인터넷 통신이 들어간다. 이렇게 인터넷 상의 한 지점(서버)과 앱(클라이언트) 사이의 통신을 네트워킹이라고 한다. 클라이언트와 서버 간의 연결 방식으로는 여러가지가 있는데 몇가지를 알아보자. 먼저 클라이언트가 요청하고 서버는 응답하는 가장 기본적인 형태인 2-tier 모델이 있다. 다음으로 데이터의 양이 많아짐에 따라 데이터를 저장하는 데이터 서버를 따로 두고, 클라이언트에 요청을 받아 응답하며, 데이터 서버에 요청을 보내 응답을 받는 응용 서버를 두기도 한다. 이를 3-tier 모델이라고 한다. 그렇다면 이렇게 클라이언트와 서버 간 통신에 사용되는 네트워킹 기법을 알아보자. Socket 통신이란? Socket 통신이란.. 2020. 4. 23.
AsyncTask 사용법 AsyncTask란? Thread를 사용할 때는 UI 객체에 접근하기 위해서는 Handler를 통해 접근해야 한다. 하지만 AsyncTask를 사용하면 하나의 클래스 안에 Thread 동작 부분과 UI 접근 부분을 동시에 정의할 수 있다. 따라서 Thread에 비해 하나의 작업 단위를 하나의 클래스로 정의할 수 있다는 장점이 있다. 사용법 AsyncTask 클래스를 상속받아 클래스를 정의할 때는, 다음과 같은 메소드들을 정의해준다. 1. doInBackground() AsyncTask를 시작하면 자동으로 실행되는 코드 부분 (Thread 부분) 2. onProgressUpdate() AsyncTask가 동작하는 중간중간 상태를 업데이트 하는 부분 (주로 UI 업데이트에 사용) 3. onPostExecut.. 2020. 4. 23.