사용자 등록을위한 활동이 있습니다. 어느 시점에서 그 활동에 등록 양식이있는 조각이 있습니다. 사용자가 REGISTER 버튼을 클릭하면 이와 같은 이벤트 버스와 함께 이벤트가 전달됩니다.
에서는 RegistrationFragment (포함 RegistrationActivity )
EventBus.getDefault().post(new RegistrationSuccessfulEvent());
에서 RegistrationActivity
public void onEvent(RegistrationSuccessfulEvent event) {
startActivity(new Intent(this, MainActivity.class));
}
이 예외가 발생합니다
Could not dispatch event: class com.myapp.RegistrationSuccessfulEvent to subscribing class class com.myapp.RegistrationActivity ...
java.lang.IllegalStateException: Activity has been destroyed
활동이 파괴되는 이유는 무엇입니까? 활동 A에 프래그먼트 F가 포함되어있는 경우 F가 계속 실행 중일 때 해당 활동이 종료 될 수 있습니까? F가 살아 있거나 다른 포함 된 조각이 실행 상태에있는 동안 A는 살아 있다고 생각했습니다. 활동 조각 커플 링 수명주기에 대해 꽤 혼란 스럽습니다.
"살아있다"는 것이 "생성되었지만 아직 파괴되지는 않았다"를 의미한다고 가정하면, 활동 라이프 사이클은 내부 조각에 의존하지 않지만 그 반대가있을 수 있습니다.
그 시점에서 조각이 파괴되었을 수 있지만 (생명주기 의미에서) 아직 가비지 수집되지 않은 Java 클래스의 인스턴스입니다. 그렇다면 여전히 Event
. 예를 들어 엄격한 의미에서 Activity has been destroyed
인스턴스가 수집되었다는 의미가 아니라 파괴 프로세스를 거쳤을뿐입니다.
프래그먼트에서 setRetainInstance 를 사용 하여 활동이 다시 생성되는 동안 프래그먼트 인스턴스를 활성 상태로 유지할 수도 있습니다.
어쨌든 RegistrationActivity가 파괴되는 이유를 알기 위해서는 더 많은 코드가 필요합니다. 방향 변경 또는 다른 호출과 같은 구성 변경 일 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다