onStart()와 onResume()의 차이
무슨 뜻인지 모르겠어요.onStart()전환 상태.onResume()메서드는 항상 다음 뒤에 호출됩니다.onStart()왜 그것이 될 수 없습니까?onResume()는 음뒤에호니다됩출다다 뒤에 됩니다.onRestart()그리고.onCreate()제하는메드소를 onStart()그것의 목적은 무엇입니까?
는 왜우리없살수없까습니이는▁without 없이 수 없을까요?onStart()저는 여전히 그것을 불필요하다고 생각합니다(아마도 그것의 의미를 완전히 이해하지 못했기 때문일 것입니다).
시작()을 제외한 재시작() 및 생성() 메서드 후에 onRestart()가 호출되는 것은 왜입니까?그것의 목적은 무엇입니까?
좋아요, 첫 번째 답변이 꽤 길었기 때문에 더 이상 연장하지 않을 테니 이것을 시도해 보겠습니다...
public DriveToWorkActivity extends Activity
implements onReachedGroceryStoreListener {
}
public GroceryStoreActivity extends Activity {}
참고: 저는 의도적으로 다음과 같은 것들에 대한 전화를 생략했습니다.super.onCreate(...)기타. 이것은 사이비 코드이므로 여기에 예술 라이선스를 주세요. ;)
의 DriveToWorkActivity팔로우...
protected void onCreate(...) {
openGarageDoor();
unlockCarAndGetIn();
closeCarDoorAndPutOnSeatBelt();
putKeyInIgnition();
}
protected void onStart() {
startEngine();
changeRadioStation();
switchOnLightsIfNeeded();
switchOnWipersIfNeeded();
}
protected void onResume() {
applyFootbrake();
releaseHandbrake();
putCarInGear();
drive();
}
protected void onPause() {
putCarInNeutral();
applyHandbrake();
}
protected void onStop() {
switchEveryThingOff();
turnOffEngine();
removeSeatBeltAndGetOutOfCar();
lockCar();
}
protected void onDestroy() {
enterOfficeBuilding();
}
protected void onReachedGroceryStore(...) {
Intent i = new Intent(ACTION_GET_GROCERIES, ..., this, GroceryStoreActivity.class);
}
protected void onRestart() {
unlockCarAndGetIn();
closeDoorAndPutOnSeatBelt();
putKeyInIgnition();
}
좋아요, 그럼 또 하나의 긴 것이군요 (죄송합니다 여러분).하지만 제 설명은 이렇습니다...
onResume()제가 운전을 시작할 때입니다.onPause()제가 잠시 정차했을 때입니다.그래서 저는 운전을 하다가 빨간불에 닿아서 멈춥니다.신호가 녹색으로 바뀌고 다시 시작합니다.빨간불이 하나 더 켜지면 잠시 멈추었다가 초록색이 되어 다시 시작합니다.onPause() -> onResume() -> onPause() -> onResume()루프는 타이트한 것이고 제 여정을 통해 여러 번 반복됩니다.
다시 시작(이동 준비)하여 다시 시작하는 루프는 일반적이지 않을 수 있습니다.어떤 경우에는 식료품점과GroceryStoreActivity ()▁my속").DriveToWorkActivity할정로 onStop() ) )을 .onRestart()그리고.onStart()여행을 다시 시작합니다.
코를입력수있다습니할에 있는 수 .onStart() 가지로onCreate()그리고.onRestart()그리고 무시하려고 하지 않습니다.onStart()그 사이에 할 필요가 있는 것은 거의 없습니다.onCreate() -> onResume()그리고.onRestart() -> onResume()내가 더 많은 것들을 복제하고 있습니다.
다시 한 번 말씀드리자면...
시작()을 제외한 재시작() 및 생성() 메서드 후에 onRestart()가 호출되는 것은 왜입니까?
오버라이드하지 않을 경우onStart()그러면 이것이 효과적으로 일어나는 일입니다. 록비록▁the비.onStart()의 Activity으로 암적으로호것이며될, 다코효효니입과적과는의입니다.onCreate() -> onResume()또는onRestart() -> onResume().
단답:
시작이 사용자에게 활동이 "보이는" 상태이기 때문에 시작 없이는 살 수 없지만 사용자는 다른 작은 대화 상자와 겹치기 때문에 아직 "상호 작용"할 수 없습니다.사용자와 상호 작용할 수 있는 이 기능은 시작과 재개를 구분하는 기능입니다.유리문 뒤에 있는 사람이라고 생각하세요.당신은 그 사람을 볼 수는 있지만 그 사람과 상호작용(대화/듣기/악수)할 수는 없습니다.OnResume은 상호 작용을 시작할 수 있는 도어 오프너와 같습니다.
또한 Restart()에서는 가장 잘 이해되지 않는 항목입니다.다시 시작() 대신에 시작() 또는 중지() 후에 다시 시작()으로 직접 이동하거나 다시 시작()으로 이동하는 것이 어떻겠느냐고 질문할 수 있습니다.생성 부분이 생략된 경우 재시작()이 생성()과 부분적으로 동일하다는 점을 유념하면 이해하기가 더 쉬워집니다.기본적으로 두 상태 모두 시작()으로 이어집니다(즉, 활동이 표시됨).따라서 두 주 모두 전시할 물건을 "준비"해야 합니다.OnCreate는 표시할 항목을 "생성"하는 추가 책임이 있습니다.
따라서 코드 구조는 다음과 같은 것에 적합할 수 있습니다.
onCreate()
{
createNecessaryObjects();
prepareObjectsForDisplay();
}
onRestart()
{
prepareObjectsForDisplay();
}
구글이 다음과 같은 것 대신 직관적이지 않은 이름을 선택했기 때문에 전체적인 혼란이 발생합니다.
onCreateAndPrepareToDisplay() [instead of onCreate() ]
onPrepareToDisplay() [instead of onRestart() ]
onVisible() [instead of onStart() ]
onBeginInteraction() [instead of onResume() ]
onPauseInteraction() [instead of onPause() ]
onInvisible() [instead of onStop]
onDestroy() [no change]
활동 다이어그램은 다음과 같이 해석할 수 있습니다.

onStart()활동이 사용자에게 표시될 때 호출됩니다.onResume()활동이 사용자와 상호 작용을 시작할 때 호출됩니다.이 경우 다른 작업을 수행할 수 있습니다.
onResume()다음을 호출:
- 나고끝
onStart() -
Activity전면에 등장합니다.
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle 에서:
"안녕하세요, 안드로이드, 구글의 모바일 개발 플랫폼을 소개합니다"라는 책은 안드로이드 앱의 라이프 사이클에 대해 멋진 설명을 해줍니다.다행히도 그들은 온라인에서 발췌한 특정 챕터를 가지고 있습니다.http://media.pragprog.com/titles/eband3/concepts.pdf 39페이지의 그림을 참조하십시오.
그나저나, 이 책은 안드로이드 초보자들에게 매우 추천할 만한 책입니다!
onStart()
- Create(Bundle) 후 또는 Restart() 후에 호출되며, 이후에 재개()가 호출됩니다.
- 는 브로드등수있다에서 할 수 .
onStart()UI에 영향을 미치는 변경사항을 모니터링하려면 onStop()에서 등록을 취소해야 합니다. - 파생 클래스는 슈퍼 클래스의 이 메서드 구현을 호출해야 합니다.그렇지 않은 경우 예외가 발생합니다.
onResume()
- 복원 후 호출됨인스턴스 상태(번들), 다시 시작 시() 또는 일시 중지 시()
- 애니메이션을 시작하고, 카메라와 같은 전용 액세스 장치를 엽니다.
onStart() 일반적으로 반환 값이 다음과 같은 백그라운드 스레드에 작업을 발송합니다.
START_STICKY는 종료된 경우 자동으로 재시작하여 활성화 상태를 유지합니다.
START_REDELIVER_INTENT자동 다시 시작 및 stopSelf() 이전에 서비스가 종료된 경우 다시 시도합니다.
onResume() 장치가 절전 모드로 전환된 후 또는 경고 또는 기타 부분 화면 하위 작업으로 인해 이전 창의 일부가 표시된 후 OS에서 호출되므로 메서드가 필드를 다시 초기화해야 합니다(예외 사항이 있는 시도 구조 내).그런 상황은 발생하지 않습니다.onStop()아이가 닫힐 때 호출됩니다.
onResume()백그라운드에서 활동이 다시 시작될 때 를 제외하고 호출됩니다.
자세한 내용은 Android_activity_lifecycle_gotcha 및 활동 라이프사이클을 참조하십시오.
는 특히격예는다사음활용여관동서대리화는표다를경결니우입정한시로하기자상되에하렬한을▁using▁a다▁a▁dialog▁managed▁from▁is▁you니▁when입특▁partic▁decide▁an히경우▁show▁activity▁toist▁example▁feyularly결한정표격대시하를 사용하여 관리되는 대화 상자를 표시하기로 결정한 경우입니다.showDialog() 있는 를 "구성 이라고 함) 는 모든 합니다.onDestroy()다시 생성되고 라이프사이클을 통해 다시 올라갑니다.하지 못할 도 있는 은, 하만당기않수있것은는도을지대신지이하,▁what,onCreateDialog()그리고.onPrepareDialog() 때 (할때호는메서드되출▁that)▁(showDialog()관리되는 대화 상자이므로 자동으로 대화 상자를 다시 만듭니다.) 사이에 호출됩니다. onStart()그리고.onResume()여기서 중요한 점은 대화상자가 전체 화면을 가리지 않으므로 기본 활동의 일부를 볼 수 있다는 것입니다.그것은 세부 사항이지만 중요합니다!
바라건대 간단한 설명: -
onStart() -> 활동이 표시되면 호출되지만, 전경에 없을 수 있습니다(예: AlertFragment가 상단에 있거나 다른 가능한 사용 사례).
활동이 전경에 있거나 사용자가 활동과 상호 작용할 수 있을 때 onResume() -> 호출됩니다.
onStart()은 단입니다.Activity표시 상태가 되고 레이아웃이 만들어지지만 이 활동 레이아웃과 상호 작용할 수 없습니다.
Resume()이제 활동 레이아웃과 상호 작용을 수행할 수 있습니다.
이것이 답으로 간주되는지는 확실하지 않지만, 여기 차이를 설명하는 구글의 코스(Kotlin과 안드로이드 앱 개발)의 유튜브 비디오가 있습니다.
- 활동이 표시되면 시작 시 호출됩니다.
- 대화상자가 팝업되는 것처럼 활동이 포커스를 잃을 때 일시 중지 시 호출됩니다.
- 대화상자가 사라졌을 때처럼 활동에 초점이 맞춰질 때 재개가 호출됩니다.
onStart()와 Resume()에 대한 호출 사이에 발생하는 작업이 있습니다.즉, 제가 뼈아프게 알게 된 뉴 인텐트()에 대한 것입니다.
SINGLE_TOP 플래그를 사용하는 경우 활동에 일부 데이터를 보내고 추가 정보를 사용하는 경우 NewIntent()에서만 액세스할 수 있습니다. NewIntent()는 시작() 이후와 재개() 이전에 호출됩니다.따라서 일반적으로 추가에서 새 데이터(수정된 데이터만 포함)를 가져와 일부 클래스 구성원으로 설정하거나 setIntent()를 사용하여 새 의도를 원래 활동 의도로 설정하고 데이터를 다시 시작()에서 처리합니다.
http://developer.android.com/training/basics/activity-lifecycle/starting.html 참조
onResume()활동이 사용자와 상호 작용을 시작하기 직전에 호출됩니다.이 시점에서 활동은 활동 스택의 맨 위에 있으며, 사용자 입력은 해당 활동 스택으로 이동합니다.항상 다음에 표시됨onPause().
onPause()시스템이 다른 활동을 재개하려고 할 때 호출됩니다.이 방법은 일반적으로 영구 데이터에 저장되지 않은 변경 사항을 커밋하고, 애니메이션 및 기타 CPU 사용 가능성이 있는 항목을 중지하는 데 사용됩니다.다음 활동은 돌아올 때까지 다시 시작되지 않기 때문에 매우 빠르게 수행해야 합니다.다음 중 하나가 수행됩니다.onResume(), 동이다전되경는우오돌, 에의해는또아.onStop()사용자가 볼 수 없는 경우.
언급URL : https://stackoverflow.com/questions/4553605/difference-between-onstart-and-onresume
'programing' 카테고리의 다른 글
| 텍스트 영역의 행 및 CSS의 콜 속성 (0) | 2023.08.26 |
|---|---|
| Visual Studio에서 링크로 파일 추가 - 디버그 대 게시 (0) | 2023.08.26 |
| Excel에서 데이터 가져오기 마법사가 데이터 유형을 자동으로 검색합니다. (0) | 2023.08.26 |
| Angular 2 HostListener 키를 누르면 이스케이프 키가 감지됩니까? (0) | 2023.08.21 |
| json/array를 ajax responseText에서 javascript 배열로 변환하는 방법은 무엇입니까? (0) | 2023.08.21 |