본문 바로가기

android/manifest

<activity> launchMode, intentFilter

exported 

  1. 다른 앱의 구성요소(액티비티, 서비스 ,broadcast receiver 등)에서 실행할 수 있는 구성요소인지 설정
  2. true : 모든 앱이 구성요소에 엑세스 할 수 있고 구성요소의 정확한 클래스 이름으로 구성요소를 실행할 수 있습니다.
  3. false : 같은 앱에 있는 구성요소나 동일한 사용자 ID를 가진 애플리케이션 또는 권한이 있는 시스템 구성요소만 구성요소를 실행할 수 있습니다.
    1. 사용자 ID 
      1. 기본적으로 각 앱에 고유한 사용자 ID(User ID, UID)를 할당합니다.
      2. 그러나 여러 앱이 동일한 사용자 ID를 공유하도록 설정할 수 있습니다.
      3. 메니 페스트 파일에서 android: shareUserId 속성을 동일한 값으로 설정한다.
      4. 데이터와 프로세스를 공유할 수 있습니다.

launchMode

  1. standard (기본값)
    1. 액티비티를 호출할 때마다 액티비티를 초기화하여 스택에 추가하는 것
    2. 동일한 액티비티를 호출해도 계속 새로운 인스턴스가 스택에  추가됨
  2. singleTop
    1. 스택의 최상단에 동일한 인스턴스가 있으면 또 생성하지 않는다.
    2. 스택의 최상단에 동일한 인스턴스가 없으면 생성함
    3. 기존 인스턴스 사용하고 필요하면 onNewIntent를 호출
  3. singleTask
    1. 모든 스택에서 그 액티비티의 인스턴스가 있으면 그 인스턴스를 재활용 한다.
    2. 존재하는 인스턴스를 최상단으로 보내고 존재하는 인스턴스의 위에 있던 모든 액티비티는 제거한다.
    3. 재사용하는 인스턴스에 대해 onNewIntent를 호출
  4. singleInstance
    1. singleInstance는 완전히 독립된 task에서 실행됨
    2. 액티비티가 실행되면 다른 액티비티와 공유되지 않는 독립적인 task를 생성
    3. 하나의 인스턴스만 사용
    4. 액티비티는 다른 액티비티와 공유되지 않는 독립된 task를 생성
    5. 전화앱같은 독립적으로 사용하는 액티비티에 사용

 

<intent-filter>

 

  1. <action android:name="android.intent.action.VIEW" />:
    1. 특정 데이터를 보거나 처리할 때 사용됨
    2. 웹 브라우저로 url을 열거나 특정 데이터를 다른 앱에서 열 때
    3. 주로 웹페이지나 특정 데이터와 관련된 액티비티를 호출
  2. <category android:name="android.intent.category.DEFAULT" />:
    1. 기본적인 카테고리
    2. 인텐트 필터가 명시적으로 지정된 인텐트를 수신할 수 있도록 설정
    3. 보통 명시적으로 호출되는 인텐트를 처리할 때 사용
    4. Intent intent = new Intent(this, MyActivity.class);
  3. <category android:name="android.intent.category.BROWSABLE" />:
    1. 웹브라우저나 웹뷰에서 링크를 클릭했을때 앱을 열수 있게 허용함

'android > manifest' 카테고리의 다른 글

안드로이드 알림 권한 : POST_NOTIFICATIONS  (0) 2025.05.22
android:requestLegacyExternalStorage="true"  (0) 2024.12.05
<application>  (2) 2024.11.18