액션바 바꾸기

onCreateOptionsMenu 액션바에 메뉴 넣기

 

 

 

----------

 

https://blog.naver.com/getinthere/221695431132

 

안드로이드 7강 - (1) SQLite 추상화 객체 room 사용해보기

1. ROOM 의존성https://developer.android.com/topic/libraries/architecture/room?gclid=Cj0K...

blog.naver.com

 

Room

새프로젝트

 

 

데이터베이스에서 IO할때는 무조건 쓰레드 써야함

기존SQLite는 쿼리문을 직접짜야하는데 - 교재 536페이지

Room을 이용하면 JPA와 비슷하다 (ORM : 오브젝트 릴레이션 모델) - 네이밍쿼리 공부

Room 의존성

https://developer.android.com/topic/libraries/architecture/room

 

Room 지속성 라이브러리  |  Android 개발자  |  Android Developers

Room 라이브러리 사용 방법을 알아봅니다.

developer.android.com

 

room 디펜던시 추가

 

lombok 디펜던시 추가

 

User엔티티

 

UserRepository

 

view - dao - db

dao에는 쿼리문이 모여있다

JPA나 ROOM과 같은 ORM은 영속성 컨텍스트를 들고 있다 (영속성 : rs를 가져와서 저장)

-1번유저를 가져온다면 - 영속성 컨텍스트에 데이터가 있는지 확인 
- 없다면 DB에서 가져와서 영속성 컨텍스트에 저장 + 데이터를 넘겨준다
- 있다면 영속성 컨텍스트에 저장된 데이터를 넘겨준다 
(캐시기능 LRU방식)

 

 

 

 

UI에서 실행하면 오류가난다

 

.fallbackToDestructiveMigration() // 2번째 배포부터 추가 / 스키마의 버전 변경이 가능
.allowMainThreadQueries() // 메인쓰레드에서 DB에 IO를 가능하게 해줌 (테스트용임 원래는 쓰레드를 만들어야함)

 

 

내부적으로 회원가입 없이 유저의 데이터를 이용해서 앱을 쓰게 하는 것!

 

데이터베이스에서 다시 가져와보자

 

 

하나만 뽑기위해 findByUid 추가

 

 

 

 

 

---------------------

 

'App > Android' 카테고리의 다른 글

안드로이드 // 액션바 바꾸기  (0) 2020.08.06
안드로이드 // Room 사용법  (0) 2020.08.06
안드로이드 // 서비스 파일 생성 팁  (0) 2020.08.06
안드로이드 // 서비스  (0) 2020.08.06
안드로이드 // 패턴  (0) 2020.08.06

 

 

 

 

 

 

 

AndroidManifest.xml

위 처럼 ide를 통해 만들면 안드로이드 메니페스트에 자동으로 등록된다

 

 

'App > Android' 카테고리의 다른 글

안드로이드 // Room 사용법  (0) 2020.08.06
안드로이드 // 음악 파일 등 받을 때  (0) 2020.08.06
안드로이드 // 서비스  (0) 2020.08.06
안드로이드 // 패턴  (0) 2020.08.06
안드로이드 // 200806 정리  (0) 2020.08.06

 

서비스

앱이 실행되어있지 않거나 보이지 않아도 카톡은 다른사람이 보낸 메시지를 받을 수 있다

백그라운드에서 실행되는 서비스가 있기 때문

서비스란 백그라운드에서 실행되는 앱의 구성요소를 말한다

액티비티 처럼 시스템에서 관리한다

액티비티를 만들 때 매니페스트파일에 등록했던 것처럼 새로 만든 서비스도 매니페스트 파일에 꼭 등록해야 한다

서비스를 실행하려면 startService()메서드를 호출 하면 된다

서비스가 비정상적으로 종료되더라도 시스템이 자동으로 재실행한다

startService()메서드를 호출할때 인텐트 객체를 파라미터로 전달

인텐트 객체는 어떤 서비스를 실행할 것인지에 대한 정보를 담고 있다

서비스를 여러번 호출해도 서비스는 이미 메모리에 만들어져있으므로

onService 대신 onStartCommand()메서드를 실행한다

실행된 서비스를 종료하려면 stopService() 메서드 호출

IntentService는 필요한 함수가 수행되고나면 종료된다

IntentService의 함수 (onHandleIntent() : onStartCommand() 메서드로 전달된 인텐트를 전달 받으면서 실행되고 함수실행이 끝나면 종료)

---------------------

 

-------------

패턴

패턴을 알면 정해진대로 만들면 되서 고민을 적게 할 수 있다

MVC패턴의 단점 - update insert 시 뷰에서 전체부분을 다시 셀렉트 해야한다

안드로이드에서는 서버에서 뷰를 리턴하는것이 아니라 변경된 데이터만 돌려준다

그래서 해당부분만 변경해야한다

1 데이터변경

2 UI변경

데이터와 UI를 동기화 시켜야한다 setText 등 - 실수 할 수 있고 해당 UI 부분을 찾기가 엄청 힘들다

MVVM - 모델 / 뷰 / 뷰모델

 

뷰 - 데이터 요청, 

모델 - API서버, 클라우드 서버, 핸드폰 내장DB, DB(DB는 바로 연결할 수 없다, 클라이언트에 DB아이디비번을 넣을수 없으므로)

API에서 가져온 데이터를 DB에 먼저 저장하고 리턴해야한다

뷰모델 - 뷰에 필요한 모든 데이터를 들고 있다(ex User, Posts), 상태관리  

DB에 저장된 데이터를 뷰모델에 저장 + LiveData라는 오브젝트에 넣으면 리액트의 state처럼 된다

(뷰모델은 DB를 구독 -> DB가 변경되면 뷰모델이 자동으로 변경) --> 리액티브 프로그래밍
(현재는 어렵고 클라우드서버에서 연습)

뷰는 뷰모델을 구독만 하고 있으면 된다 -> 뷰모델이 변경되면 UI변경이 자동으로 된다

 

소켓통신의 장점 - 연결이 계속 유지가 됨

http서버는 리퀘스트시에만 연결

구독하려면 최초 리퀘스트시에 소켓을 연결

 

---------------

 

1. tedPermission - 권한

2. 카메라 접근 + 메니페스트

3. Room

4. 데이터베이스 정리

5. IO 쓰레드 사용

6. 이미지 정리

7. 메니페스트 정리

 

LayoutInflater는 어플리케이션콘텍스트를 가져올수 있는 곳이면 어디서든 사용가능

+ Recent posts