일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 수명주기
- 부스트코스
- 레이아웃
- 프로그래밍
- SceneDelegate
- RecyclerView
- 서비스
- 텍스트뷰 스크롤
- 안드로이드_프로그래밍
- 안드로이드 스튜디오
- 리니어 레이아웃
- Swift
- textview auto scroll
- 데이터베이스
- 자바
- 코드리뷰
- 코틀린
- 스낵바
- 아이폰
- 제약 레이아웃
- edwith
- 드로어블
- 뷰
- 프로젝트
- 안드로이드
- 테이블_레이아웃
- 텍스트뷰 자동 스크롤
- 액션바
- 상대 레이아웃
- IOS
- Today
- Total
듀다의 성장개발로그
[부스트코스] 안드로이드 프로그래밍 12 - 화면 전환 기초 본문
안드로이드 앱을 사용하다 보면 다른 화면으로 넘어가거나, 표시되지 않던 부분들이 표시되는 기능들을 많이 볼 수 있습니다. 앱이 두 개 이상의 화면을 사용하기 때문에 그러한 기능을 만들 수 있는 것이지요. 이제 한 가지 화면을 구성하는 것을 넘어 두 개 이상의 화면을 다루는 것도 시도해 볼 차례입니다.
하나의 화면은 '액티비티'라고 부릅니다. 안드로이드 스튜디오의 빈 프로젝트에서도 기본적으로 포함된 레이아웃과 소스 파일 이름에 'activity'가 포함되듯 안드로이드의 화면은 액티비티라고 부릅니다.
한 액티비티는 하나의 xml과 하나의 java 소스 파일이 한 쌍으로 구성됩니다.
액티비티를 만드는 과정은 강의에서 다섯 가지 단계로 소개했는데요, 우선 새로운 액티비티 만들고 -> 새로운 액티비티의 XML 레이아웃 정의하고 -> 메인 액티비티에서 새로운 액티비티를 띄웁니다. 그리고 나서 -> 새로운 액티비티에서 응답 보낸 후 -> 메인 액티비티에서 응답 처리하는 것이 액티비티 추가의 마지막 단계입니다.
첫번째, 새로운 액티비티를 만드는 것은 패키지 경로에 new - activity를 선택하여 만들고 싶은 액티비티의 형태를 선택합니다. 그리고 나서 적절한 이름을 지정해주면 됩니다. 액티비티 형태는 프로젝트와 마찬가지로 빈 액티비티가 주로 사용됩니다.
위와 같은 화면을 거쳤다면 성공적으로 생성한 것이지요.
두번째, 새로운 액티비티의 XML을 정의합니다. 이 과정은 프로젝트를 처음 만들때와 다르지 않습니다. XML파일은 액티비티를 생성할 때 같이 만들어지므로, 그 파일에서 레이아웃 화면을 구성하면 됩니다.
세번째, 메인 액티비티에서 새로운 화면을 띄우는 것이 세번째 과정인데요, 메인 액티비티에서 인텐트를 호출하여 새로운 화면을 띄울 수 있습니다.
액티비티는 시스템이 관리하기에, 화면을 띄우거나 없앨 때도 시스템에 요청해야 합니다. 시스템에 요청하기 위해 필요한, 시스템이 이해할 수 있는 포맷이 바로 인텐트입니다.
화면을 띄우는 것은 인텐트의 startActivity메소드를 호출하여 수행할 수 있습니다.
또, startActivityForResult라는 메소드를 통해서도 가능합니다. 이는 새 액티비티에서 메인화면으로 돌아왔을 때, 액티비티의 응답을 받을 수 있게 하는 메소드입니다. 인자로 고유한 요청코드가 들어가는데, 요청코드로 응답을 받으면 요청코드가 액티비티의 구분자가 될 수 있겠죠.
이미 떠 있는 새 화면을 지우는 것은 인텐트의 finish() 메소드를 호출하여 수행할 수 있습니다.
finish를 호출하면 화면이 지워질 뿐만 아니라 기존에 떠 있던 화면이 다시 등장합니다. 이는 액티비티 스택에서 액티비티를 관리하기 때문인데요, Last In First Out인 스택이기 때문에 나중에 추가된 화면이 사라지면 기존 화면이 다시 보이게 되는 것이지요.
그리고 엑스트라 데이터라는 개념이 있습니다.
시스템에서 인텐트를 받았더라도 엑스트라 데이터는 해석하지 않고 그냥 넘겨버립니다. 그래서 그 인텐트는 그대로 다른 액티비티(메인 액티비티)로 전달되는데요,
그래서 엑스트라 안에 데이터를 담아두는 것은 다른 액티비티 안으로 정보를 전달할 수 있는 방법이 됩니다.
엑스트라 데이터는 해쉬테이블처럼 키값과 함께 데이터가 들어갑니다.
액티비티는 안드로이드 시스템에서 관리합니다.
액티비티와 같이 안드로이드 시스템이 관리하는 것을 애플리케이션 구성요소라고 하는데요,
애플리케이션 구성요소에는 액티비티를 비롯하여 서비스, 브로드캐스트 수신자, 내용 제공자가 포함됩니다.
서비스는 화면에 표시되진 않으나 동작하는 것입니다. 예를 들면, 지난 포스팅에서 다룬 인플레이션을 할 때에도 시스템 서비스를 활용합니다.
브로드캐스트 수신자는 무언가를 수신했을 때, 그것을 어떤 앱이 받을 지 내부에서 던져주는 것을 브로드캐스팅이라고 하는데, 이 브로드캐스팅을 처리하는 것이 브로드캐스트 수신자입니다.
그리고 일반적으로 앱은 보안 때문에 다른 앱의 저장소에 직접 접근할 수 없는데요, 다른 앱의 저장소에 접근할 수 있게 해주는 것이 내용 제공자입니다.
애플리케이션 구성 요소 중 하나를 만들면 그것을 시스템이 알 수 있습니다.
우리가 만든 앱을 단말기에 설치하면 설치하는 시점에 내 앱에 애플리케이션 구성요소중 하나가 들어가 있는지 확인하는 과정을 거칩니다. 이 때 Manifests를 확인하여 알아보므로, 사용할 애플리케이션 구성요소를 Manifests에 등록해놓으면 시스템이 그 정보를 사용하여 사용 여부를 알 수 있습니다.
'안드로이드 > 부스트코스' 카테고리의 다른 글
[부스트코스] 안드로이드 프로그래밍 14 - 액티비티 수명 주기 (0) | 2020.02.21 |
---|---|
[부스트코스] 안드로이드 프로그래밍 13 - 인텐트 (0) | 2020.02.21 |
[부스트코스] 안드로이드 프로그래밍 - 프로젝트 B 코드 리뷰 (0) | 2020.02.17 |
[부스트코스] 안드로이드 프로그래밍 11 - 리스트뷰, 스피너, 그리드뷰 (0) | 2020.02.14 |
[부스트코스] 안드로이드 프로그래밍 10 - 인플레이션 (0) | 2020.02.14 |