onNewIntent () 라이프 사이클 및 등록 된 리스너
를 통해 검색 대화 상자에서 의도를 수신하기 위해 singleTop Activity를 사용하고 onNewIntent()
있습니다.
내가 알아 차린 것은 onPause()
전에 onNewIntent()
호출 된 다음 호출 onResume()
됩니다. 시각적으로 :
- 검색 대화가 시작되었습니다
- 활동에 해고 된 검색 의도
onPause()
onNewIntent()
onResume()
문제는에 등록 된 리스너 onResume()
가에 제거되어 onPause()
있지만 onNewIntent()
호출 내부에 필요하다는 것 입니다. 그러한 청취자를 이용할 수있게하는 표준 방법이 있습니까?
onNewIntent()
는 스택의 다른 곳에서 이미 실행되고 따라서 호출 할 수없는 singleTop 활동의 시작점으로 사용됩니다 onCreate()
. 따라서 활동 라이프 사이클 관점에서 onPause()
전에 호출 해야 onNewIntent()
합니다. 내부에서 이러한 리스너를 사용하지 않도록 활동을 다시 작성하는 것이 좋습니다 onNewIntent()
. 예를 들어 대부분의 경우 내 onNewIntent()
방법은 다음과 같습니다.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// getIntent() should always return the most recent
setIntent(intent);
}
모든 설정 로직에서 일어나고으로 onResume()
활용하여 getIntent()
.
참고 : 다른 방법으로 라이프 사이클 메소드를 호출하는 것은 좋지 않습니다. 아래 예제에서 귀하의 onNewIntent가 항상 활동 유형에 관계없이 호출되도록 노력했습니다.
OnNewIntent ()는 활동이 처음 작성된 경우를 제외하고 항상 singleTop / Task 활동에 대해 호출됩니다. 이때 onCreate는이 스레드에서 요청 된 몇 가지 쿼리에 대한 솔루션 제공을 호출합니다.
onNewIntent를 다음과 같은 onCreate 메소드에 넣어 항상 호출 할 수 있습니다
@Override
public void onCreate(Bundle savedState){
super.onCreate(savedState);
onNewIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
//code
}
참고 URL : https://stackoverflow.com/questions/8619883/onnewintent-lifecycle-and-registered-listeners
'Programing' 카테고리의 다른 글
Codeigniter에서 이미지 파일, CSS, JS 등을 어디에 배치합니까? (0) | 2020.06.22 |
---|---|
데이터에 대한 DES, Triple DES, AES, 복어 암호화 비교 (0) | 2020.06.22 |
데이터를 제출하지 않는 비활성화 된 양식 필드 (0) | 2020.06.22 |
items () 대신 iteritems ()를 언제 사용해야합니까? (0) | 2020.06.22 |
iOS 10에서 Xcode 7 사용 (0) | 2020.06.22 |