ActivityB
에서 돌아 오는 때 ActivityA
의 특별한 행동을해야 할 경우, 당신에게 새로 고칠 수 있습니다 Activity A
재정이 onActivityResult(int requestCode, int resultCode, Intent data)
에 다음 Activity A
에서 Activity B
를 시작합니다 startActivity(Intent intent)
대신 startActivityForResult(Intent intent, int requestCode)
을 사용해야합니다.
startActivityForResult(new Intent(this, ActivityB.class), REQUEST_CODE);
이렇게하면 onActivityResult(int requestCode, int resultCode, Intent intent)
를 오버로드 ActivityA
에 ActivityB
의 종료를 감지 할 수있을 것입니다 : 당신은 뒤로 가기 버튼의 언론 ActivityB
을 종료하는 경우에도
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == REQUEST_CODE) {
doRefresh(); // your "refresh" code
}
}
이 작동합니다. 이 경우 resultCode
은 기본값으로 RESULT_CANCELLED
입니다.
현재 refresh 스키마가 작동하는 이유는 표준 launchMode에서 활동을 실행하고 있기 때문입니다. 즉, startActivity (새로 고침)을 호출 할 때마다 액티비티 A의 새 인스턴스가 생성됩니다. 새 인스턴스가 각각 onCreate()를 거쳐 불필요한 인스턴스를 생성하면 액티비티가 새로 고쳐집니다. 이 작업을 올바르게 수행하려면 실제로 활동을 "새로 고침"하고 onResume()으로 이동하는 onCreate() 코드를 식별해야합니다. Ovidiu는 아래에서 제안했습니다. – glorifiedHacker