안드로이드 특정 스타트 업 모드의 활동과 라이프 사이클의 현장에서

안드로이드 특정 스타트 업 모드의 활동과 라이프 사이클의 현장에서

디렉토리

안드로이드 특정 스타트 업 모드의 활동과 라이프 사이클의 현장에서


 이상한, 안드로이드 너무 오래 만 완전히 단순히 말을 것을 gaom을 이해하지 스타트 업 모드와 특정 시나리오에 생명주기 활동 caif 오늘 자신을 찾을 수 없어!

아주 간단한 질문에 말을 당황,하지만 여전히 자신의 메모리에 긴 점을 뽑아 있습니다.

하나는, 처음의 수명주기의 활동에 대한 모든 이야기, 우리는 모두 알고 아래에 표시되는 여러 활동 zho 수명주기가 있다는 것을 :

내가 뭔가 특정 내가 그것을 이해하고 말할 것입니다, 이러한 이전 철 내 전임자했다 믿습니다!

  • 첫째, 새로운 활동 인스턴스를 열고, 시스템은 전화를 켜집니다

에서 onCreate ()는 -> ONSTART은 () -> onResume ()는 다음 실행 시작

  (그것은 새로운 활동을 열거 나 잠금 화면으로하지만에서 그들이 덮여 때 실행 전경 여전히 순간 자오 활동에 포커스를 잃었 실행하지만 여전히 볼 수 있습니다), onPause ()를 호출;

 활동의 실행을 중지하는 방법은 일반적으로 영구 데이터, 스톱 애니메이션과 다른 것들에 저장되지 않은 변경 사항을 제출하는 데 사용됩니다. 그러나이 활동은 (는 모든 상태와 멤버 정보를 유지 및 체류에 연결된 완전히 살아 창 관리자 )

세 가지 방법이 있습니다 ① 그 다음은 onResume 호출되는 활동에 사용자가 반환 () 메소드를 다시 실행

② 사용자가 바탕 화면 또는 열려있는 다른 활동 백업, (모든 상태와 멤버 정보를 유지하기 위해 중단 온다) (중지시 호출 사용자에게 보이지 않는 )

③에는 애플리케이션, 프로세스의 활성이 회복 시스템 일 수있는 높은 메모리 제한을 요구할 권리가 시스템 메모리의 부족. 다시 만들어 다시해야합니다 재개하기 위해 (활동 프로세스 재생 onPause ()와 이동 중지 () 상태).

이동 중지 () 활동 상태 (전경 A의 표시)에 대한 사용자의 반환, 시스템은 호출하는 경우

onRestart () -> ONSTART은 () -> 다음 onResume () 및 다시 실행

활동 (통화 종료 ()) 또는 그 이전 호출의 끝에들의 OnDestroy 시스템 () 메소드 자료 모든 보류 자원을 살해된다.

세 가지 중첩 루프에서주기 활동

  1. () 호출 및들의 OnDestroy () 호출 사이에서 onCreate 활동의 수명을 완료하는 것입니다. 
  2. 가시 생존 활성 통화 사이를 이동 중지 () 호출) (ONSTART 발생할 것이다. 여러 ONSTART () 및 이동 중지 ()의 활동의 수명 전반에 걸쳐 시스템 호출, 활동은 표시 및 숨기기 사이에 앞뒤로 전환 할 수 계속할 수 있기 때문이다. 
  3. 활동하기 전에 상기 핸드 오버가 기지국 사이 onResume () 호출을 발생 onPause () 뒤에있다. 피 지연 수시로 전환 순서 발생할 수도 상태는 비교적 경량이어야 두 방법 코드를 전환하는 사용자를 기다리는 의해 발생하기 때문이다. 

항상 어쨌든 화면을 전환하는 라이프 사이클에 갈 것이다 활동에 대해 질문 각 인터뷰는,이 질문은 매우 간단하지만 대답은 정확하지, 난 아직도 자신이 무엇을 더 신뢰할 수있는 목록을 씹는 제공합니다.

우리는 생명주기가 정상주기 인 새로운 activit를 만들 :

에서 onCreate ->
ONSTART ->
onResume ->

qieh 화면 수평 화면으로 전환 된 후에 우리 CTR + F12 키를 누를 때는, 출력 shuc의 수명이라는 것을 발견

onSaveInstanceState ->
onPause ->
이동 중지 ->
들의 OnDestroy ->
에서 onCreate ->
ONSTART ->
onRestoreInstanceState ->
onResume -> 당신은 먼저 현재 상태를 저장 한 후 다시 파괴 것을 찾을 수 놀라게 될 것입니다 우리가 갔던 및 수직 화면으로 전환 할 때 인생에서 같은 기간보다 발견했을 때, 그러나, 우리는 우리가 구성 파일의 AndroidManifest.xml을 수정하면 것을 발견, 활동을 만들 안드로이드 액티비티 추가 : configChanges = "방향을" 이때 출력으로 전환 할 때 다음과 같이 화면 수평주기는 :
onSaveInstanceState를 ->
onPause ->
중지시 ->
들의 OnDestroy ->
에서 onCreate ->
ONSTART ->
onRestoreInstanceState ->
onResume -> 

우리가 키를 누릅니다 경우 CTR + F12는 우리가 shuc 출력 갈 것이다 다음 쉔 수명주기를 찾을 전환 :

onSaveInstanceState ->
onPause ->
이동 중지 ->
들의 OnDestroy ->
에서 onCreate ->
ONSTART ->
onRestoreInstanceState ->
onResume ->
의 onConfigurationChanged ->에도 여전히 낯선 당황하지 말고, 더이 선 이상 찾을 수 안드로이드에 configChanges = "오리엔테이션": 우리는 안드로이드의 AndroidManifest.xml이의 속성 때 다시 및 configChanges = "오리엔테이션 | keyboardHidden " 다음 어쨌든 화면을 전환, 당신은 단지 출력을 찾을 수 onConfigChanged
의 onConfigurationChanged -> 다음 스위치가 반드시 화면 qieh 스위칭 원래 액티브가 다시 작성 파괴, 또는 우리의 구성 파일, 가난한 메모리를 설정하는 방법을 볼 때, 그래서 어쨌든, 다른 라이프 사이클을 떠나지 않을 방법 자신에게, 어쨌든 유휴.

둘째, 당신은 큰 소하는 경우, 멀리 시작 모드 이동하시기 바랍니다되는 다음 활동을 산책하고 싶습니다!

  • "표준"(기본 모드) 

  이 모델에서 활동을 시작하면, 안드로이드는 항상 대상 활동의 새로운 인스턴스, 현재 작업 스택에 추가 된 작업을 만듭니다. 이 방법은 원래의 작업에 새로운 작업을 추가, 새로운 작업을 시작하지 않습니다.    

  • "singleTop" 

  모드와 표준 모드는 한 가지를 제외하고, 기본적으로 동일 : 스택의 작업 활동 상단에 이미 시작 할 때, 시스템은 대상 활동 인스턴스를 다시 만들 수 있지만 직접 스택의 활동 작업 상단을 다중화하지 않습니다.

  • "singleTask"

  같은 작업 하나 개의 인스턴스 만에서 활동. 존재하지 않는 활동을 시작하려는 경우, 시스템은 인스턴스를 생성하고 작업 스택을 추가 할 것입니다; 

  당신이 활동을 시작하려면 이미 존재하고 스택 맨, 스택의 직접 재사용 작업 활동 상단이있다. 

  하여 스택의 상단,하지만이 후 시스템이 모든 작업의 ​​제거의 다른 모든 활동 활동 위에있는 것입니다하지 않는 경우 활동, 존재 그래서 스택 대상 활동의 상단.

라이프 사이클 : 동일의 패턴으로 SingleTop 경우. 그냥 onNewIntent 다른 콜백 메소드 활동 수

예 :이 경우이 작업 스택 A, B, C 세 활동. 이 시점에서 C는 시작 모드 SingleTask 모드, 상단에 있습니다.

사례 1 : 이벤트에서 C 활동에 클릭하면, C 활동의 동일한 유형으로 이동 할 필요가있다. 그 결과, 직접 스택 C 활동이다. 사례 2 : 이벤트에서 C 활동에 클릭은 활동에 뛰어 필요가있다.

스택은 활동가되도록하는 작업 B, C 모두 파괴 위의 결과로서.
 

  • "singleInstance" 

  작업 활동 목표에서 시작되는 상관없이, 그것은 단지 대상 활동의 인스턴스를 생성하고 활동 인스턴스 (글로벌 싱글)을로드하는 새로운 작업 스택을 사용합니다.

  당신은 활동이 존재하지 않는 시작하려는 경우, 시스템은 새로운 작업을 생성합니다 다음 목표 활동 활동 인스턴스이 새로운 작업에 인스턴스를 만듭니다.

     

이 패턴 활동은 하나의 작업 스택을 찾을 수 있습니다.

이 시스템은 종종 실행, 키 잠금 화면 응용 프로그램과 같은 응용 프로그램에 사용되는 등, 전체 시스템이 하나있다! 우리의 응용 프로그램에서 그래서 일반적으로 사용되지 않습니다. 나는 이해할 수있다.

예 : 시작 A. 후하자 A 활성 모드 시스템은 재사용의 특성으로 인해, 스택 내에서,에 대해 별도의 작업 스택을 생성한다. 이 독특한 작업 스택 시스템을 파괴하지 않는 한 아마도 요청은 새로운 활동을 생성하지 않습니다.

 이미이있는 작업, 어떤 응용 프로그램에 있는지, 존재 활동 시작하려면, 그래서 활동 표시 있음을, 내가 singleTask 및 singleInstance하기 전에 이해하는 좋은이없는, 작업 활동을 둘 것이다 시스템이 전경에 위치하고을, 더 나은 나보다, 그것은 오늘날 다른 두 사람을 만들 언급하지 않는다

출시 팔 개 원래 기사 · 원 찬양 4 ·은 10000 +를 볼

추천

출처blog.csdn.net/honey_angle_first/article/details/89186986