액티비티(Activity)
안드로이드 스튜디오에서는 왜 화면을 액티비티 단위로 구성할까?
데스크톱과는 다르게 모바일 환경에서는 A라는 앱이 B라는 앱을 호출 할 수 있다.
이 때 A라는 앱이 B라는 앱을 호출할때 B앱 전체를 호출하는게 아니라, 액티비티 단위로 호출하게된다.
예를들어서 홈화면에서 이메일앱을 열면 이메일 목록을 표시하는 액티비티가 열린다.
하지만 SNS 앱에서 친구를 추가하기 위해 이메일앱을 호출하면 이메일을 작성하기 위한 액티비티를 실행할 수 있다.
이런 환경의 특성상 모바일 앱은 액티비티 단위로 구성된다.
즉, 호출하는 목적에 따라 다른 앱을 액티비티 단위로 호출하는게 가능하기 위해서다.
이렇게 다른 액티비티를 호출하는 것은 Intent를 이용해 구현된다.
인텐트(Intent)
Intent는 앱이 실행하려는 작업, 즉 '의도'이다.
startActivity()와 같은 메서드로 시스템에 Intent를 전달하면, 시스템은 Intent를 사용하여 적절한 앱 구성요소를 식별하고 시작한다.
예를들어 내 앱이 사진을 찍는 기능이 필요하면 직접 구현하는게 아니라, 핸드폰에 설치되어있는 카메라앱의 액티비티를 호출할 수도 있다.
Intent는 이처럼 앱 컴포넌트가 무엇을 할 것인지를 담는 메시지 객체라고도 볼 수 있다.
Intent에는 여러 정보를 담을 수 있는데, Int, String 같은 자료형을 직접 담을 수도 있고
그런 정보들을 의미단위로 묶은 bundle을 담을 수도 있다.
Bundle bundle = new Bundle();
bundle.putString("name", "croucs");
bundle.putInt("age",2322);
intent.putExtra("myBundle", bundle);
그런데 이런 Intent를 이용해 다른 앱의 액티비티를 호출하려고 할때 과연 어떤 앱의 어떤 액티비티를 호출해야할까?
그것을 안드로이드 운영체제가 무작위로 정하지는 않을것이다.
인텐트 필터 (Intent-Filter)
앱의 manifest에 intent-filter를 설정해서 이 앱이 어떤 요청을 받을 수 있는지 정해놓을 수 있다.
각 인텐트 필터는 인텐트의 작업, 데이터 및 카테고리를 기반으로 어느 유형의 인텐트를 수락하는지 지정한다.
시스템은 인텐트가 인텐트 필터 중 하나를 통과한 경우에만 인텐트를 앱의 액티비티에 전달한다.
'안드로이드 앱개발' 카테고리의 다른 글
파일입출력2 : 저장소 (Android Studio Internal/External Storage) (0) | 2020.10.27 |
---|---|
파일입출력 1 : 쓰고 읽기 (File I/O in Kotlin) (0) | 2020.10.27 |
AdMob nativeAd 를 RecyclerView를 활용해 표시하기 (nativeAd with RecyclerView) (0) | 2020.10.27 |
volley로 이미지 업로드 (volley multipart request) (0) | 2020.10.27 |
라이브러리는 이해하고 사용하자. (0) | 2020.10.27 |