한국어

스마트폰앱

온누리070 플레이스토어 다운로드
    acrobits softphone
     온누리 070 카카오 프러스 친구추가온누리 070 카카오 프러스 친구추가친추
     카카오톡 채팅 상담 카카오톡 채팅 상담카톡
    
     라인상담
     라인으로 공유

     페북공유
    
     PAYPAL
     
     PRICE
     

pixel.gif

    before pay call 0088 from app


글 수 137

[Android] Activity 생성시에 사용되는 Intent Flag 정리

안드로이드 엑티비티에 대해 이해하기 위해 필요한 지식은 3가지 정도가 아닐까 생각합니다. 바로 Activity Lifecycle, Task, Intent 입니다. 모두 어느정도 이해를 하시고 계신 상태라고 생각하고 글을 적어보겠습니다.

인텐트를 이용하여 새로운 엑티비티를 띄우기 위해서는 일반적으로 다음과 같은 방법으로 새로운 엑티비티를 실행하게 됩니다.

위의 코드는 다음과 같은 순서로 실행이 됩니다.

1. 새로운 MyActivity 인스턴스가 생성됩니다.
2. 이 인스턴스가 현재 태스크 스택의 최상단에 푸시가 됩니다.
3. 엑티비티가 시작되며(onStart) 포그라운드로 가져옵니다.

하지만 위와 같은 인텐트 생성에 관련된 기본적인 실행 방법을 인텐트 플래그를 사용하여 임의로 조정할 수 있습니다.

위와 같은 방법을 통해 특정한 플래그 옵션값을 startActivity(intent)가 수행될때 같이 넘겨줄 수 있습니다. 지금부터 이러한 플래그 옵션값들을 좀더 상세기 적어보도록 하겠습니다.

FLAG_ACTIVITY_BROUGHT_TO_FRONT

이 플래그는 사용자가 설정하는것이 아닌 시스템에 의해 설정되는 값입니다. 엑티비티의 실행모드가 singleTask이고 이미 엑티비티스택에 존재하고 있는 상태라고 가정을 할 때 다시 그 엑티비티가 호출되고 재활용 되었을 경우 자동으로 설정이 됩니다.

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
사용자 삽입 이미지이 플래그를 사용하면 태스크가 리셋될때 플래그가 사용된 엑티비티부터 최상단의 엑티비티까지 모두를 삭제합니다. 리셋은 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 플래그에 의해 실행이 되는데 시스템에 의해 홈스크린에서 사용자에 의해 백그라운드에 있던 태스크가 포그라운드로 전환될때에 항상 붙게 됩니다.

위의 그림에서 볼 수 있듯이 백그라운드와 포그라운드 전환관계에서 CLEAR_WHEN_TASK_RESET 플래그가 설정된 엑티비티와 이후의 엑티비티 모두가 삭제되는것을 알 수 있습니다. 백그라운드로 넘어갔을때 유지를 안해도 될 일회성 엑티비티들은 해당 플래그를 사용하면 도움이 될것이라 봅니다.

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

이 플래그는 인텐트를 이용하여 새로운 태스크를 생성하거나 존재하고 있는 태스크를 포그라운드로 가져오는 경우가 아닌경우에는 사용하여도 아무런 효과가 없습니다. 적절한 경우라면 태스크를 리셋 합니다. 이때에 태스크의 affinity 설정에 맞추어 리셋이 일어나게 되며 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET과 같은 플래그 설정에 맞추어진 특정 처리가 일어나게 됩니다.

FLAG_ACTIVITY_CLEAR_TOP
사용자 삽입 이미지만약에 엑티비티스택에 호출하려는 엑티비티의 인스턴스가 이미 존재하고 있을 경우에 새로운 인스턴스를 생성하는 것 대신에 존재하고 있는 엑티비티를 포그라운드로 가져옵니다. 그리고 엑티비티스택의 최상단 엑티비티부터 포그라운드로 가져올 엑티비티까지의 모든 엑티비티를 삭제합니다.

예를 들면 현재 ABCDE순서로 엑티비티가 스택에 들어있다고 할때 엑티비티E에서 C를 호출하게 되면 D와 E는 스택에서 삭제되고 ABC만이 남아있게 됩니다. 여기서 AB 역시 남는다는 것을 이해하셔야 합니다.

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

엑티비티가 새로운 태스크안에서 실행될때에 일반적으로 타겟 엑티비티는 ‘최근 실행된 엑티비티’ 목록에 표시가 됩니다. (이 목록은 홈버튼을 꾹 누르고 있으면 뜹니다) 이 플래그를 사용하여 실행된 엑티비티는 최근실행된엑티비티 목록에서 나타나지 않습니다.

FLAG_ACTIVITY_FORWARD_RESULT

기본적으로 엑티비티A가 엑티비티B를 호출하였다고 할 경우 startActivity(intent) 대신에 startActivityForResult(intent) 메서드를 이용하여 호출을 함으로써 엑티비티B의 결과값을 엑티비티A로 전달할 수 있습니다.

엑티비티B에서는 setResult(int resultCode)를 정의한 뒤에 종료를 하게 되며 엑티비티B를 호출하였던 엑티비티A는 콜백메서드인 onActivityResult()를 통해 결과값을 전달받게 됩니다.
사용자 삽입 이미지이제 엑티비티B가 또다른 엑티비티C를 호출하였다고 가정해 봅시다. 그리고 이렇게 호출된 엑티비티C에서 엑티비티A까지 전달할 결과값을 정의하였습니다. 이 결과값을 B에서 A로 또다른 코드를 통해서 프로그래머의 코드를 통해서 값을 전달하는 번거로움을 피하기 위해 안드로이드에서는 이 인텐트 플래그값을 제공합니다.

위에 나와있는 그림의 예를 통해 보면 엑티비티B가 엑티비티C를 호출하기위해 단순히 startActivity()를 이용하는 것을 알 수 있습니다. 그리고 지금 설명중인 플래그를 붙이도록 합니다. 이후에 엑티비티C에서는 setResult()를 통해 결과값을 정의를 한후에 finish()를 통해 엑티비티를 종료하도록 합니다.

엑티비티B에서는 단순히 마찬가지로 finish()를 통해 엑티비티를 종료하시기만 하면 됩니다. 이후에 startActivityForResult()를 통해 엑티비티B를 호출했던 엑티비티A는 onActivityResult() 콜백 메서드로 결과값을 받아보시면 엑티비티C에서 정의한 값을 받을 수 있다는것을 알 수 있습니다.

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

이 엑티비티 플래그는 시스템에 의하여 자동으로 설정되는 플래그입니다. 홈스크린화면에서 홈버튼을 롱클릭함으로써 뜨게 되는 “최근실행목록”을 통해 실행되었을 경우 자동으로 설정됩니다.

FLAG_ACTIVITY_MULTIPLE_TASK

이 엑티비티 플래그는 FLAG_ACTIVITY_NEW_TASK와 함께 사용하지 않으면 아무런 효과가 없는 플래그입니다. 두개의 플래그를 동시에 사용할 경우 새로운 태스크는 재활용되지 않고 무조건 새로 생성되며 피호출되는 엑티비티는 이 새로운 태스트의 최상위 엑티비티가 됩니다. (당연히 하나밖에 없을테니-_-a)

FLAG_ACTIVITY_NEW_TASK

이 엑티비티 플래그를 사용하여 엑티비티를 호출하게 되면 새로운 태스크를 생성하여 그 태스크안에 엑티비티를 추가하게 됩니다. 단, 기존에 존재하는 태스크들중에 생성하려는 엑티비티와 동일한 affinity를 가지고 있는 태스크가 있다면 그곳으로 새 엑티비티가 들어가게됩니다.

하나의 어플리케이션안에서는 모든 엑티비티가 기본 affinity를 가지고 같은 태스크안에서 동작하는것이 기본적(물론 변경이 가능합니다)이지만 FLAG_ACTIVITY_MULTIPLE_TASK 플래그와 함께 사용하지 않을경우 무조건적으로 태스크가 새로 생성되는것은 아님을 주의하셔야 합니다.

FLAG_ACTIVITY_NO_ANIMATION

안드로이드 OS가 2.0으로 올라오면서 새로 추가된 엑티비티 플래그입니다. 이 플래그를 사용할 경우 엑티비티가 스크린에 등장할시에 사용될 수 있는 다양한 애니메이션 효과를 사용하지 않습니다.

FLAG_ACTIVITY_NO_HISTORY

이 플래그를 사용할 경우 새로 생성되는 엑티비티는 어떤 태스크에도 보존되지 않게 됩니다. 예를 들면 로딩화면과 같이 다시 돌아오는것이 의미가 없는 화면이라면 이 플래그를 사용하여 태스크에 남기지 않고 자동적으로 화면이 넘어감과 동시에 제거할 수 있습니다.

FLAG_ACTIVITY_NO_USER_ACTION

이 플래그가 설정되면 자동적으로 엑티비티가 호출될 경우에 자동 호출되는 onUserLeaveHint()가 실행되는것을 차단합니다. onUserLeaveHint() 콜백 메서드는 어플리케이션 사용중에 전화가 온다거나 하는등의 사용자의 액션없이 엑티비티가 실행/전환되는 경우에 호출되는 메서드입니다.

FLAG_ACTIVITY_REORDER_TO_FRONT
사용자 삽입 이미지호출하려던 엑티비티가 이미 엑티비티 스택에 존재하고 있다면 이 플래그를 사용하여 스택에 존재하는 엑티비티를 최상위로 끌어올려줍니다. 결과적으로 엑티비티 스택의 순서가 재정렬되는 효과를 가집니다. 위의 예를 볼 경우에 엑티비티E가 C를 호출하게 됨으로써 엑티비티C가 최상단으로 이동하는 결과를 확인하실 수 있습니다.

FLAG_ACTIVITY_SINGLE_TOP

이 플래그는 말그대로 하나의 탑(?)을 의미하는 설정입니다. 엑티비티를 호출할 경우 호출된 엑티비티가 현재 태스크의 최상단에 존재하고 있었다면 새로운 인스턴스를 생성하지 않습니다. 예를 들어 ABC가 엑티비티 스택에 존재하는 상태에서 C를 호출하였다면 여전히 ABC가 존재하게 됩니다.

번호
제목
글쓴이
137 다이알로그 작성 활용 activity class xml
admin
2018-05-21 237
[Android] Activity 생성시에 사용되는 Intent Flag 정리
admin
2018-05-11 465
135 Activity stack 처리하는 방법 (Android)
admin
2018-05-11 456
134 간단하게 Activity stack 처리하는 방법 (Android) launche mode
admin
2018-05-11 464
133 Android Studio How can I fix "Design editor is unavailable until a successful build
admin
2018-05-08 574
132 안드로이드 구글 맵 OnMarkerClickListener 사용 - 마커 클릭 이벤트처리
admin
2018-05-02 556
131 How to make an Android custom keyboard?
admin
2018-04-25 621
130 원격 실제 안드로이드폰 아이폰 테스트 베드 스마일모바일 앱 개발 지원 센터 앱
admin
2018-04-22 574
129 linphone build android DialerFragment.java sourcecode
admin
2017-10-29 1791
128 setOnTouchListener() 추가하기 동일이벤트에 두가지 동작 시키기
admin
2017-10-29 1692
127 Android ndk 사용 이해하는순서 개발자
admin
2017-10-14 1810
126 Using toast inside timertask perfect
admin
2015-05-30 10362
125 안드로이드에서 spinner와 DB 연결 간단 예제
admin
2015-05-28 10908
124 Android Getting Started with Material Design
admin
2015-04-14 10202
123 Button height different from background height in Android image design
admin
2015-04-05 10954
122 visit the sharedPreference of another application, the SharedPreference have to set
admin
2015-04-04 10981
121 Framelayout Methods of the SlidingDrawer
admin
2015-03-29 11776
120 Android PDFView
admin
2015-03-18 11038
119 Android Playing Audio from a web url
admin
2015-03-18 9865
118 Android Text To Speech(TTS)
admin
2015-03-18 12129
117 Android WebPageLoader with progress-bar
admin
2015-03-18 11896
116 Android Speech To Text
admin
2015-03-18 10778
115 Android Sliding Drawer Functionality 안드로이드 슬라이딩 드로우 예제 sample
admin
2015-03-18 13518
114 Eclipse와 Android NDK 연동하기
admin
2014-12-21 16785
113 안드로이드 실습환경 구축 안드로이드 ADT,SDK 설치 및 환경구축
admin
2014-12-21 16992
112 Install latest Eclipse IDE in Ubuntu 14.04, 13.10
admin
2014-12-21 17316
111 launchMode Intent standard singleTop sigleTask singleInstance
admin
2014-10-05 19536
110 Recording a wav file from the mic in Android - CHANNEL_IN_MONO
admin
2014-08-01 20810
109 How can I check the system version of Android?
admin
2014-08-01 20169
108 hideSoftInput , showSoftInput android
admin
2014-07-22 16070
107 clicklistener and longclicklistener on the same button?
admin
2014-07-20 20017
106 Code examples for android.media.ToneGenerator
admin
2014-07-20 20644
105 android Java Source Code Vibrator vibe
admin
2014-07-19 20301
104 selector gradient corners padding sample
admin
2014-07-19 20901
103 안드로이드 어플 업데이트, 업그레이드 방법!!! 업데이트 관리, 최신버전 알림
admin
2014-06-12 22984
102 integration with the PayPal Wallet App PayPal intigration in Android
admin
2014-06-08 21380
101 android sdk content loader stuck at 0
admin
2014-06-04 22721
100 안드로이드 버전 역사 API Level 1 ~ 19 허니콤 진저브레드 젤라빈 켓켓 기능 변화
admin
2014-05-27 21011
99 [Android] GridView Calendar - 그리드 뷰 캘린더 (달력 그리기 예제)
admin
2014-05-10 29292
98 Wifi ON/OFF 하기 안드로이드 android java
admin
2014-05-07 22414
97 How launch 'Add Contact' activity android 주소록 추가 화면으로 이동 뛰우기
admin
2014-05-07 22367
96 activity android
admin
2014-04-05 20979
95 Call Log listview
admin
2014-04-03 22753
94 Dialpad
admin
2014-04-03 20691
93 how can i pick a contact from call log?
admin
2014-04-01 21199
92 Android audio streaming with OpenSL ES and the NDK.
admin
2014-03-31 22327
91 Android MediaPlayer, not quite there yet. Android Audio
admin
2014-03-31 21545
90 streaming audio on android
admin
2014-03-31 23066
89 Linux Sound Device와 안드로이드 사운드 시스템
admin
2014-03-31 20650
88 [연재기사] 안드로이드 시스템 개발자를 위한 안드로이드 시스템의 분석 및 이해
admin
2014-03-31 21434
87 android AudioTrack Class android-audiotrack-buffering-problems
admin
2014-03-31 24642
86 Dialog 관련 샘플 소스
admin
2014-03-30 20261
85 apk 디컴파일 방법-dex2jar
admin
2014-03-30 19929
84 android phone Locale: Language name to Country / Language code
admin
2014-03-30 21165
83 Progress Bar Circle android example
admin
2014-03-29 30474
82 Android notification notification manager Status , ongoing
admin
2014-03-29 21177
81 자바 숫자만 추출 하기
admin
2014-03-28 25681
80 CallLog read Write android
admin
2014-03-28 20975
79 안드로이드 주소록 바로 가져 다 쓰기
admin
2014-03-28 21877
78 Android Activity lifecycle file
admin
2014-03-27 24255
77 블루투스 BluetoothHeadset 안드로이드 android 오토 앤서 auto answer
admin
2014-03-27 23644
76 only the original thread that created a view hierarchy can touch its views : Good
admin
2014-03-26 19810
75 Async background on a separate thread, and then publish the results to the UI
admin
2014-03-26 20761
74 안드로이드 앱에 AdMob 광고 넣기 구글 광고 넣기 앱 이나 웹사이트에 적용 사례
admin
2014-03-25 24695
73 Android SDK: Asynchronous HTTP Requests and Cookis
admin
2014-03-25 21791
72 Force Stop by Error in httpClient.execute(httpPost);
admin
2014-03-24 21453
71 How To Make HTTP POST Request To Server GET - Android Example
admin
2014-03-22 21764
70 가상 디바이스에 apk파일 설치하기 안드로이드 악성 코드 분석 디컴파일 file
admin
2014-02-13 23555
69 Using JQuery Mobile Swatches in Dreamweaver CS6 to Easily Skin Mobile Applications
admin
2014-02-04 21308
68 SharedPreferences.onSharedPreferenceChangeListener not being called consistently
admin
2014-02-04 20531
67 Android User Interface Design: Creating a Numeric Keypad with GridLayout
admin
2014-02-02 20883
66 Android User Interface Design: Password Confirmation
admin
2014-02-02 19893
65 Difference between onCreate() and onStart()?
admin
2014-01-30 19520
64 Android Drawable XML Documentation
admin
2014-01-29 19122
63 Tab Layout | TabBar - Android Example
admin
2014-01-29 21861
62 Show Phone Contacts In AutoComplete Suggestions - Android Example
admin
2014-01-29 19978
61 Incomming Outgoing Call Log With Call Duration - Android Project
admin
2014-01-29 22321
60 Custom Dialog - Android Example
admin
2014-01-29 22307
59 Efficient way to determine if a String is a Number
admin
2014-01-25 19281
58 How to check if a string contains only digits in Java
admin
2014-01-25 20147
57 How to check if a string contains only digits in Java
admin
2014-01-25 20958
56 Guide for understanding enum in java and Java Enum ValueOf Example
admin
2014-01-17 17395
55 Java null check why use == instead of .equals()
admin
2014-01-17 20000
54 How to retrieve the Device Unique ID from android device Every times same file
admin
2014-01-15 22698
53 How to find serial number of Android device?
admin
2014-01-11 19693
52 How to Accept Payments in an Android App Using MPL
admin
2013-12-28 19286
51 Understanding Android local data store APIs Using SQLite databases
admin
2013-12-15 22255
50 Simple and best way for GeoLocation.
admin
2013-12-15 22130
49 Android WebView Example and others
admin
2013-12-13 22032
48 Does anyone know a library containing all localized country names in java
admin
2013-12-12 21991
47 Android option menu
admin
2013-11-23 22445
46 Android Intents startActivity example Data transfer between activities
admin
2013-11-22 19489
45 Create Login diallog
admin
2013-11-22 19495
44 java 정리좀 잘 해 놓은곳
admin
2013-11-18 22396
43 안드로이드/Android ExpandableListView 만들기 - 2 - (속성 추가)
admin
2013-11-18 25526
42 안드로이드/Android Handler 와 Timer(TimerTask) 를 활용한 Intro 화면 구성
admin
2013-11-18 26583
41 안드로이드 Android Cursor를 이용한 DB 데이터 사용 하기
admin
2013-11-18 39010
40 Text auto scale Resize to Fit within Bounds editText very easy
admin
2013-11-17 26054
39 Locale locale = Locale.getDefault(); locale.getCountry();
admin
2013-11-13 24205
38 Icon in the status bar when application is running
admin
2013-11-10 18926
37 Android 개발시 Fragment 를 이용해서 화면 구성하기
admin
2013-11-10 28532
36 스마트폰의 A-GPS 원리 및 3G/4G/WIFI를 이용한 위치추정
admin
2013-11-10 28915
35 building csipsimple sourcecode
admin
2013-11-05 22344
34 [5장] 레이아웃_ 안드로이드 프로그래밍의 모든 것
admin
2013-11-05 22685
33 Customizing Toast In Android Showing Toast for Longer Time Great Code
admin
2013-11-04 24737
32 UI DESIGN 요정정리
admin
2013-11-02 22074
31 UI 디자인을 잘하기 위한 테크닉 80
admin
2013-11-02 20030
30 UX 디자인 7가지 비밀 제대로 활용되지 못하는 UX 디자인의 뻔한 비밀들
admin
2013-11-02 19616
29 UI 디자인을 위한 체크리스트 (Checklist for UI design)
admin
2013-11-02 19931
28 Android UI layout 잘된 설명
admin
2013-10-04 23456
27 Android Custom List View using Custom Adapter Example
admin
2013-10-04 22018
26 android layout
admin
2013-10-02 22718
25 android Tap Layout example
admin
2013-10-02 20258
24 sub menu
admin
2013-10-02 22553
23 simpler/better way to put a border/outline around my TextView?
admin
2013-09-27 20344
22 Borders, Margins and Padding
admin
2013-09-27 22195
21 Tutorial: Create Android library projects
admin
2013-09-23 21746
20 How to Build ffmpeg with NDK r9
admin
2013-09-23 24703
19 Cygwin
admin
2013-09-23 20752
18 Using the Android* x86 NDK with Eclipse* and Porting an NDK Sample App
admin
2013-09-23 25262
17 Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties
admin
2013-09-23 23485
16 Souce Code of com.android.phone.DTMFTwelveKeyDialer
admin
2013-09-09 16484
15 My Own Phone Dialler, Only on Android dialer source code
admin
2013-09-09 22849
14 android-google-voice-locations android google dialpad source code
admin
2013-09-09 19556
13 package com.android.contacts.dialpad; android dialpad source code
admin
2013-09-09 20739
12 Simple Dialer Application
admin
2013-09-09 18740
11 package com.csipsimple.ui; CSIPsimple UI source code
admin
2013-09-09 19628
10 android dialpad source code
admin
2013-09-09 20553
9 Google Play 개발자 콘솔 URL
admin
2013-07-12 23695
8 Android: Screen Densities, Sizes, Configurations, and Icon Sizes
admin
2013-04-27 25072
7 Supporting Multiple Screens Android
admin
2013-04-27 21541
6 mysql java driver JDBC mysql-connector-java-5.1.22 file
admin
2013-04-20 24559
5 SharedPreferences sample 샘플
admin
2013-04-14 24103
4 Android Preferences Activity example
admin
2013-04-12 23942
3 GIS 좌표체계와 대한민국의 좌표계
admin
2013-03-31 24751
2 How to disable Mobile Data on Android
admin
2013-03-31 24737
1 csipsimple SIP application for Android devices explains how to build the application.
admin
2013-03-31 26052