[java] Android-활동 생성자 대 onCreate

Android Activities에는 특정 수명주기 onCreate가 있으며이를 재정의하고 초기화에 사용해야한다는 것을 알고 있지만 생성자에서 정확히 어떤 일이 발생합니까? Activity생성자를 재정의 할 수 있거나 재정의 해야하는 경우가 있습니까? 아니면 절대 건드리지 않아야합니까?

에 대한 참조가 Activities완전히 정리되지 않았기 때문에 (따라서 가비지 수집기를 방해 하기 때문에) 생성자를 사용해서는 안된다고 가정하고 있습니다 onDestroy. 이 올바른지?



답변

생성자에서 어떤 작업을 수행해야하는 이유를 생각할 수 없습니다. 활동을 직접 구성하지 않으므로 매개 변수를 전달하는 데 사용할 수 없습니다. 일반적으로 onCreate에서 작업을 수행하십시오.


답변

Gili의 의견에서 언급했듯이 생성자에 항목을 넣는 좋은 이유는 최종 필드를 사용하기 때문입니다.

그러나 생성자에서 초기화하면 객체의 수명이 조금 더 길어 지지만 나중에 onCreate곧 호출 되기 때문에 많이 생각하지는 않습니다 .

내 이상적인에 대해 비록, 나는 활동 회원의 초기화를 위해 생성자를 방지하고 의지 할 onResume()onPause()내 응용 프로그램이 처리되는 자원.

들어 onCreate()난 보통 지역 변수에보기 매핑을 수행하는 데 사용합니다. android-annotations가 이미 나를 위해 그렇게 onCreate()하기 때문에 활동에 대한 방법이 거의 없습니다 . 그래도 여전히 서비스에서 사용합니다.

단, 멤버를 보면 초기화 중일 수 있습니다.

  • 적절한 시간 (onResume 또는 onPause)에 호출해야하는 “close”메소드가 있습니다.

  • 그것들은 뷰의 일부가 될 것입니다. 즉, 초기화되어야하고 onCreate가 호출되어야합니다.

  • 그것들은 어쨌든 생성자에 넣을 필요가없는 상수입니다. 여기에는 정적 블록으로 초기화 할 수있는 페인트 및 경로 상수가 포함됩니다.


답변

이제 생성자를 재정의해야하는 경우에 있습니다. 사실, 동일한 구조를 가진 활동이 있습니다. 따라서 많은 활동을 만드는 대신 하나의 “마스터”활동을 만들고 다른 활동은이 활동을 상속합니다. 따라서 oncreate 메서드에서 사용할 일부 변수를 초기화 할 수 있도록 자식 활동의 생성자를 재정의해야합니다.

즉, 생성자는 상속으로 재사용 할 수있는 “마스터 활동”을 시뮬레이션하게합니다!


답변

활동에 사용자 지정 매개 변수가 있거나 상속 된 클래스의 호출을 추적하려는 경우 생성자를 재정의해야합니다.


답변