다중 상속이 필요한 것처럼 보이는 적절한 코드 구현에 대한 개념적 문제가 있습니다. 많은 OO 언어에서는 문제가되지 않지만 프로젝트는 Android 용이므로 다중과 같은 것은 없습니다 extends.
나는 그런 간단한 같은 다른 기본 클래스에서 파생 된 활동의 무리를 가지고 Activity, TabActivity, ListActivity, ExpandableListActivity, 등 또한 나는에 배치해야합니다 몇 가지 코드 조각이 onStart, onStop, onSaveInstanceState, onRestoreInstanceState모든 활동 및 기타 표준 이벤트 핸들러.
모든 활동에 대해 단일 기본 클래스가있는 경우 코드를 특수 중간 파생 클래스에 배치 한 다음이를 확장하는 모든 활동을 작성합니다. 불행히도 여러 기본 클래스가 있기 때문에 그렇지 않습니다. 그러나 동일한 코드 부분을 여러 중간 클래스에 배치하는 것은 좋은 방법이 아닙니다.
또 다른 방법은 도우미 개체를 만들고 위에서 언급 한 이벤트의 모든 호출을 도우미에 위임하는 것입니다. 그러나이를 위해서는 도우미 개체가 포함되어야하고 모든 처리기는 모든 중간 클래스에서 재정의되어야합니다. 따라서 첫 번째 접근 방식과 큰 차이는 없습니다. 여전히 많은 코드 복제입니다.
Windows에서 비슷한 상황이 발생하면 하위 클래스 기본 클래스 ( ActivityAndroid 의 클래스에 "대응" )를하고 적절한 메시지를 한곳에서 트랩합니다.
이를 위해 Java / Android에서 무엇을 할 수 있습니까? Java 계측 ( 일부 실제 예제 포함 ) 과 같은 흥미로운 도구가 있다는 것을 알고 있지만 Java 전문가가 아니며이 특정 사례에서 시도해 볼 가치가 있는지 확실하지 않습니다.
다른 적절한 해결책을 놓친 경우 언급하십시오.
최신 정보:
안드로이드에서 동일한 문제를 해결하는 데 관심이있는 사람들을 위해 간단한 해결 방법을 찾았습니다. ActivityLifecycleCallbacks 인터페이스를 제공 하는 Application 클래스 가 있습니다 . 그것은 우리가 모든 활동의 중요한 사건에 가치를 더하고 가로 채기 위해 필요한 것을 정확하게 수행합니다. 이 방법의 유일한 단점은 API 레벨 14부터 사용할 수 있다는 것입니다. 많은 경우에 충분하지 않습니다 (오늘날 API 레벨 10에 대한 지원은 일반적인 요구 사항입니다).
decordator pattern. 이것은 최후의 수단이지만 실제로 코드 중복을 피하기를 원합니다. 다른 흥미로운 아이디어가 없다면 귀하의 답변을 수락하겠습니다. "중간체"의 코드를 일반화하기 위해 제네릭을 사용할 수 있습니까?