Do it! 안드로이드 앱프로그래밍 10일차 (19.05.09)

2019. 5. 9. 13:17Engineer/안드로이드 앱 프로그래밍

반응형


 Chapter 08. 스레드와 애니메이션 


   08-1 네트워킹이란?


인터넷 방에 연결되어 있는 원격지의 서버 또는 원격지의 단말과 통신을 통해 데이터를 주고 받는 일반적인 일들


원격지의 서버를 연결하는 방식

  • 클라이언트와 서버가 1대1로 연결하는 '2-tier Client/Server' (예, FTP, HTTP, POP3 등)
  • 3-tier 방식. 서버측의 트래픽 증가 등의 문제로 트래픽 분산이나 관리등의 목적으로 좀더 유연한 방식
  • N-tier 방식

   08-2 소켓 사용하기


소켓 연결은 TCP와 UDP방식으로 나뉨 안드로이드의 최근 플랫폼 버전에서는 소켓 연결시 스레드를 사용하는 것이 강제사항. 스레드를 사용하지 않으면 네트워킹 기능 자체가 동작하지 않음. 따라서 네트워킹을 통하여 얻은 정보나 상태,환경 정보의 변화를 UI를 통해 업데이트 하려면 핸들러를 사용해아 함

소켓 프로그램의 경우 표준 JAVA 코드를 통하여 작성가능 소켓으로 원격 서버에 연결할 때는 인터넷을 사용하므로 매니페스트 파일에 인터넷 사용 권한을 등록해야 함

실제 앱에서 네트워킹 관련 코드를 만들 때는 ObjectInputStream과 ObjectOutputStream은 잘 사용하지 않는다. 자바가 아닌 다른 언어로 만들어진 서버와 통신할 경우 데이터 송수신이 정상적으로 이루어지지 않을 수 있어서. 따라서 일반적으로 DataInputStream과 DataOutputStream을 많이 사용한다. 


   08-3 웹으로 요청하기


비연결성(Stateless)인 HTTP 프로토콜은 페이지 정보를 요청할 때마다 내부적으로 소켓연결을 새로 하고 응답을 받은 후 연결을 끊는다. 

HTTP를 이용한 웹서버 접속도 표준 자바 방식으로 사용 가능. 또한 인터넷을 사용하므로 매니페스트에 인터넷 사용 권한을 등록해야 함. 

자바 라이브러리 이외에도 아파치 라이브러리를 SDK에 포함하여 좀더 다양한 기능을 제공 할 수있음. 

   08-4 뉴스 정보 가져오기


RSS는 보통 'Really Simple Syndication'으 약자로, 자주 바뀌는 내용을 제공하기 위해 사용되는 표준 웹 피드(Feed) 포멧. 예를 들어 최신 연예 뉴스나 스포츠 뉴스를 사용자에게 보여주고 싶을 때 애플리케이션에서 간단하게 연동하여 사용할 수 있는 것.


 RSS로 된 내용을 가져와 안드로이드에 보여주려면 RSS서비스 URL을 알아야 하는데 보통 이런 URL을 요약해서 알려주는 RSS 통합 사이트들이 있음. 


앱에서는 RSS 문서소스를 파싱하여 화면에 보여주면 되는데, 이때 대표적인 파싱 방법으로는 DOM(Document Object Model)과 SAX(Simple API for XML) 파서가 있음

  • DOM : XML문서 전체를 읽어 들인 후 각각의 태그 정보를 사용하는 방식. 직관적임
  • SAX: 읽어들인 태그정보가 있으면 필요한 만큼 부분적으로 처리할 수 있는 방식. 문서의 양이 많거나 내용이 순차적인 경우 SAM를 선호



 Chapter 09. 데이터베이스 


   09-1 모바일 데이터베이스


안드로이드가 포함하고 있는 것은 SQLite 라는 데이터베이스로 작은 임베디드 데이터베이스로 개발된 경량급 관계형 데이터베이스 제품이다. 파일로 만들어진 하위 수준의 구조를 가짖면서도 데이터베이스의 기능을 그대로 사용할 수 있다. 저장할때는 파일로 저장되므로 데이터베이스의 복사 이동 삭제가 쉽다. 그리고 가장큰 특징은 속도가 데이터 조회 속도가 빠르다는 것과 표준 SQL을 지원한다는 점이다. 


   09-2 데이터베이스와 테이블 만들기


데이터베이스는 여러개의 테이블을 담고 있는 하나의 그릇 역할. 따라서 사용하라면 그릇을 만들거나, 기존에 만들어진 것을 열고 닫을 수 있어야 함


Activity는 Context를 상속한 것이므로 Context에 정의된 openOrCreateDatebase( )를 사용하여 데이터 베이스를 만들거나 열수 있음 


데이터베이스를 만든 후에는 execSQL( )메소드를 이용해서 테이블을 만들 수 있음 그리고테이블을 마든 후에는 레코드를 추가할 수 있음


JAVA 코드로 데이터베이스와 케이블을 만들 수도 있지만 SQLite의 관리도구인 'DB Browser for SQLiete'를 다운 받아서 GUI 기반으로 데이터 베이스를 생성및 수정할 수도 있음 (http://sqlitebrowser.org)


앱에서 만든 데이터베이스는 /data/data/$package_name/databases/ 폴더 밑에 저장됨. 데이터베이스 파일이 /data/폴더 안에 만들어지게 되면 실제 단말에서는 보안 때문에 이 폴더를 볼 수 없다. 파일이 생성되는 위치에 따라 제약이 있을 수 있으므로 SD카드에 저장하는것을 추천.


   09-3 헬퍼 클래스를 이용해 업그레이드 지원하기


테이블의 정의가 바뀌거나 하여 구조를 업그레이드할 필요가 있을 때는 API에서 제공하는 헬퍼(Helper) 클래스를 사용하면 된다


SQLiteOpenHelper 클래스는 데이터베이스를 만들거나 열기 위해 필요한 일들을 도와준다. 하지만 SQLiteOpenHelper를 만들었다고 해서 데이터베이스 파일이 바로 만들어지는 것은 아니며, 파일이 만들어지도록 하려면 getReadableDatabase( ) 또는 getWritableDatabase( )메소드를 호출 해야 한다. 이 클래스를 이용할 때의 장점은 데이터베이스가 만들어지거나 업그레이드가 필요할 때 콜백 메소드가 호출된다는 점이다. 


   09-4 데이터 조회하기


헬퍼 클래스를 이용하여 메인 액티비티에서 데이터베이스를 상요할 경우 코드가 간단해지는 장점이 있다. SQLite를 사용하기 위해서 어느정도 문법을 숙지하고 있어야 한다.  


   09-5 SQL을 메소드 호출로 실행하기


SQLiteDatabase 객체를 보면 데이터베이스 조작과 조회를 위한 각각의 기능이 메소드로 정의 되어 있음


안드로이드 단말에서 데이터베이스를 사용할 때는 

  1. 데이터베이스 만들기  : openOrCreateDatabase( )
  2. 테이블 만들기 : execSQL( )
  3. 레코드 추가하기 : execSQL( )
  4. 데이터 조회하기 : rawQuery( )
순서로 정리 할 수 있다. 






반응형