플래그
플래그는 인텐트에 추가할 수 있는 옵션이라고 이해하면 쉽습니다.
다시 말해, 시스템이 인텐트를 해석한 후 무언가를 동작시킬 때 옵션에 따라 다른 동작을 하도록 만들 수 있습니다.
플래그는 인텐트 객체의 addFlags 메소드를 이용해 설정할 수 있으며 여러 개의 플래그를 | 기호로 붙여 한꺼번에 설정할 수도 있습니다.
가장 많이 사용되는 플래그는 다음과 같은 세 개의 플래그입니다.
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP
이 플래그는 나중에 브로드캐스트 수신자(BroadcastReceiver)에 대해 살펴볼 때 다시 볼 수 있습니다.
예를 들어, SMS 문자를 수신했을 때 그 내용을 받아 처리하는 것이 브로드캐스트 수신자(BroadcastReceiver)입니다.
이 브로드캐스트 수신자(BroadcastReceiver)에서 액티비티를 띄우고 그 안에서 수신한 문자를 보여주려 한다면 문자가 도착할 때마다 액티비티가 뜨게 될 겁니다
따라서 화면에 뜬 액티비티를 바로바로 없애주지 않으면 여러 개의 액티비티가 층층이 쌓이는 문제가 발생할 수 있는데 이것을 Intent.FLAG_ACTIVITY_SINGLE_TOP 으로 해결할 수 있습니다.
Intent.FLAG_ACTIVITY_SINGLE_TOP 플래그는 동일한 액티비티가 이미 메모리에 만들어져 있다면 추가로 만들지 않고 그 액티비티를 화면에 띄워주는 역할을 합니다.
Intent.FLAG_ACTIVITY_NEW_TASK 플래그는 액티비티들을 관리하는 태스크(TASK) 객체를 새로 만들도록 합니다.
나중에 살펴볼 브로드캐스트 수신자(BroadcastReceiver)나 서비스(Service)는 화면이 없기 때문에 새로운 화면을 띄워주려면 먼저 태스크(Task) 객체가 만들어져야 합니다.
따라서 이 플래그를 추가해주어야 합니다.
Intent.FLAG_ACTIVITY_CLEAR_TOP 플래그는 원하는 액티비티가 이미 메모리에 만들어져 있고 그 이후에 다른 액티비티가 만들어진 경우 원하는 액티비티를 찾아 다시 띄울 때 그 이후에 만들어진 다른 액티비티들은 없애주는 역할을 합니다.
이런 플래그들을 이해하려면 액티비티 스택(Activity Stack)에서 액티비티가 관리된다는 점을 이해해야 합니다.
여기에서는 플래그가 어떤 것인지 이해하기만 해도 충분합니다.
나중에 브로드캐스트 수신자(BroadcastReceiver) 부분에서 실제 코드로 연습해보기 바랍니다.
부가데이터
메인 액티비티에서 메뉴 액티비티를 띄워주고 싶다면 인텐트를 사용합니다.
그리고 이 인텐트는 새로 화면에 보이는 메뉴 액티비티까지 전달됩니다.
인텐트가 메뉴 액티비티까지 전달되므로 메뉴 액티비티에서는 전달받은 인텐트 안에 들어있는 데이터를 꺼내어 사용할 수 있습니다.
이렇게 인텐트는 시스템을 통해 다른 액티비티로 전달될 수 있는데 액티비티뿐만 아니라 다른 애플리케이션 구성요소로도 전달될 수 있습니다.
자주 사용되는 애플리케이션 구성요소로는 액티비티(Activity), 서비스(Service), 브로드캐스트 수신자(BroadcastReceiver) 등이 있으며 이 구성요소들 간에 데이터를 전달하는 데 인텐트가 사용되는 것입니다.
부가 데이터는 시스템에서 건드리지 않고 전달만 되며 인텐트 안에 번들(Bundle) 객체가 들어가 있어 그 안에 데이터를 넣을 때는 put …, 문자열을 가져올 때는 get … 메소드를 사용합니다.
최근댓글