1. 애플리케이션 구성요소
애플리케이션 구성요소는 안드로이드 시스템이 관리한다.
새로 추가한 구성요소는 매니페스트(AndroidManifest.xml) 파일에 넣어두면
앱이 설치될 때 시스템이 이 파일을 보고 구성요소를 확인할 수 있다.
2. 애플리케이션의 4대 구성요소
액티비티: 화면
서비스: 눈에 보이지 않는 백그라운드에서 기능을 동작한다
브로드캐스트 리시버: 다른 어플리케이션이 보내는 이벤트(문자 등)를 받아 처리한다.
컨텐츠 프로바이더: 권한을 받아 컨텐츠(문서, 캘린더 등)의 데이터를 가져오거나 추가할 수 있다.
3. 새 액티비티 추가하기
액티비티를 새로 만들고 싶다면 File -> New -> Activity -> Empty Activity 메뉴를 이용해 만들 수 있다.
이렇게 추가하면 매니페스트 파일에도 <activity> 태그가 자동으로 추가된다.
4. 화면 전환
새로운 액티비티를 화면에 보여주고 싶다면 startActivity나 startActivityForResult 메소드를 통해 가능하다.
시스템에서 액티비티를 관리하기 때문에 시스템 쪽에 요청이 필요한데, 이 때 시스템이 알아들을 수 있는 포맷이 Intent이다.
startActivityForResult 메소드를 호출하면 인텐트 객체가 시스템으로 전달되는데 구체적으로 액티비티 매니저에게 전달된다.
액티비티 매니저는 지정한 액티비티를 실행하여 화면에 보여준다.
5. 원래 화면으로 돌아가기
어플리케이션에서 실행되는 액티비티는 Activity Stack형태로 관리되기 때문에
화면에 보이는 액티비티가 있을 때 새로운 화면이 실행되면 그 화면은 기존 화면의 위에 보이는 것과 같다.
이때 화면을 없애주는 메소드가 finish이며, 이 메소드를 호출하면 다시 원래의 액티비티로 돌아갈 수 있다.
6.액티비티를 위한 플래그
플래그는 인텐트에 추가할 수 있는 옵션으로,
시스템이 인텐트를 해석한 후 무언가를 동작시킬 때 옵션에 따라 다른 동작을 하도록 만들 수 있다.
인텐트 객체의 setFlags, addFlags 메소드를 이용해 설정할 수 있으며, 여러 개의 플래그를 "|" 기호로 붙여 한꺼번에 설정할 수도 있다.
1 | intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); | cs |
7. FLAG_ACTIVITY_SINGLE_TOP 플래그
새로 실행하려는 액티비티와 화면에 보이는 액티비티가 동일한 액티비티인 경우
메모리에 새로 만들지 않고 화면에 보이는 액티비티를 그대로 보여준다.
여기서, 화면에 보이고 있는 액티비티를 그대로 사용하므로 onCreate 메소드가 호출되지 않고, onNewIntent 라는 메소드가 호출된다.
이 메소드가 별도로 호출되는 이유는 인텐트를 전달받기 위한 것이며, onNewIntent 메소드 안에서 인텐트 객체를 확인할 수 있다.
8. Intent.FLAG_ACTIVITY_NEW_TASK 플래그
액티비티들을 관리하는 TASK 객체를 새로 만든다.
9. Intent.FLAG_ACTIVITY_CLEAR_TOP 플래그
원하는 액티비티가 이미 메모리에 만들어져 있고
그 이후에 다른 액티비티가 만들어진 경우 원하는 액티비티를 찾아 다시 띄울 때
그 이후에 만들어진 다른 액티비티들은 없애주는 역할을 한다.
출처: https://www.edwith.org/boostcourse-android/lecture/17064/
'Android' 카테고리의 다른 글
부가데이터 (Extra) - Serializable & Parcelable (0) | 2018.05.19 |
---|---|
애플리케이션 구성요소와 액티비티 전환 (2) (0) | 2018.05.19 |
Android Studio와 Git 연동하기 (0) | 2018.05.18 |
GridView (그리드뷰) (0) | 2018.05.07 |
Spinner (스피너) (0) | 2018.05.07 |