Android 활동의 시작 모드

Android 애플리케이션 개발의 가장 중요한 주제 중 하나에 오신 것을 환영합니다. 이 기사에서는 예제와 함께 시작 모드에 대한 자세한 설명을 볼 것입니다.

중요한 용어



시작 모드로 이동하기 전에 몇 가지 중요한 용어가 있습니다.



작업은 활동의 모음입니다. 애플리케이션은 하나 또는 여러 개의 작업을 가질 수 있습니다. 애플리케이션 실행 시 새 작업이 생성되고 실행기 활동이 작업의 루트가 됩니다. 새 작업 생성은 이 문서의 뒷부분에서 볼 시작 모드에 따라 다릅니다.

백 스택



스택 데이터 구조에서 활동을 유지하는 것을 백 스택이라고 합니다. 활동은 사용자 작업 및 시작 모드에 따라 스택으로 푸시되고 스택에서 팝될 수 있습니다.

실행 모드



시작 모드에는 네 가지 유형이 있습니다.
  • 스탠다드
  • 싱글탑
  • 단일 작업
  • 단일 인스턴스

  • 그들 각각을 이해합시다.

    1. 기준



    시작 모드를 지정하지 않으면 standard가 기본 모드입니다. 활동을 시작할 때마다 활동의 새 인스턴스를 생성합니다. A, B, C, D 등이 활동이라고 가정합니다. 다음과 같이 작동합니다.

    활동이 있는 작업:

    A -> B -> C -> D
    


    새 활동 시작 E:

    A -> B -> C -> D -> E
    


    활동 B를 다시 시작합니다.

    A -> B -> C -> D -> E -> B
    


    2. 싱글 탑



    이 시작 모드에서 활동이 작업의 맨 위에 있고 해당 인스턴스를 다시 생성하면 새 인스턴스가 생성되지 않습니다. 대신 onNewIntent()가 업데이트된 데이터로 호출됩니다. 활동이 맨 위에 없으면 새 인스턴스가 푸시됩니다. 예를 들어보십시오:

    활동이 있는 작업:

    A -> B -> C -> D
    


    Activity B를 시작합니다. B가 맨 위에 있지 않으므로 새 인스턴스가 생성됩니다.

    A -> B -> C -> D -> B
    


    활동 B를 다시 시작하십시오. B가 맨 위에 있으므로 B의 onNewIntent()가 호출됩니다.

    A -> B -> C -> D -> B
    


    3. 단일 작업



    이 시작 모드에서 작업에 활동이 없으면 새 인스턴스가 생성되고 그렇지 않으면onNewIntent()이 호출됩니다. 또한 그 위의 활동은 파괴됩니다. 예를 들어 이해해 봅시다.

    활동이 있는 작업:

    A -> B -> C -> D
    


    시작 모드 단일 작업으로 활동 E 시작:

    A -> B -> C -> D -> E
    


    시작 모드 단일 작업으로 활동 B 시작:

    A -> B
    


    이제 B가 이미 거기에 있음을 알 수 있습니다. 따라서 새 인스턴스가 생성되지 않습니다. B의 onNewIntent()라고 합니다. 또한 B 위에 있는 C, D, E도 파괴되었습니다.

    4. 단일 인스턴스



    단일 인스턴스 시작 모드가 있는 활동의 경우 새 작업이 생성됩니다. 먼저 예를 본 다음 설명할 수 있습니다.

    활동이 있는 작업:

    A -> B -> C -> D
    


    시작 모드 단일 인스턴스로 E 시작:

    Task-1: A -> B -> C -> D
    



    Task-2: E
    


    E를 다시 시작하면 새 작업이 생성되지 않습니다. 동일한 E 인스턴스에서 onNewIntent() 메서드가 호출됩니다.

    시작 모드를 추가하는 방법



    시작 모드는 다음과 같이 AndroidManifest.xml에서 설정할 수 있습니다.

    <activity android:name=”.MainActivity”
              android:launchMode=”singleTop” />
    
    


    또는 다음과 같은 플래그를 사용하는 Java/Kotlin 코드:

    val intent = Intent(activity, HomeGenericActivity::class.java).apply { 
                addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
            }
    


    보세요, 아주 쉽습니다!!! 😁😁😁 이 글을 재미있게 읽으셨기를 바랍니다.

    좋은 웹페이지 즐겨찾기