일부 외부 데이터의 실행 그래프를 표시하는 활동에 많은 코드가 있습니다. 이 새로운 LinearLayout
유도 된 클래스로 물건을 이동ViewGroup 파생 클래스에서 라이프 사이클을 관리하는 방법은 무엇입니까?
public class GraphView extends LinearLayout {
public GraphView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.graph_view, this, true);
}
public void start() {
// Perform initialization (bindings, timers, etc) here
}
public void stop() {
// Unbind, destroy timers, yadda yadda
}
.
.
.
}
은 간단했다 : 활동 코드가 복잡의 종류를 얻고 있었다, 나는이 코드를 추출하고 GraphView
클래스를 생성하기로 결정했다. 그러나이 그래프에서 사용 된 타이머 및 이벤트 리스너를 생성 및 파기하는 것과 관련된 라이프 사이클 관리 코드가있었습니다 (예 : 활동이 일시 중지 된 경우 백그라운드에서이 폴링을 원하지 않았습니다).
MS Windows 배경에서 볼 때, 우선 덮어 쓸 수있는 onCreate()
과 onDestroy()
메서드 또는 비슷한 것을 찾을 것으로 예상되지만, LinearLayout (또는 상속 된 멤버 중 하나)의 정렬을 찾지 못했습니다. 이 초기화 코드를 모두 Activity에두고 작업을 뷰로 전달해야하는 것은이 코드를 모두 재사용 가능한보기로 캡슐화한다는 원래의 목적을 뛰어 넘은 것처럼 보였습니다.
내보기에 두 개의 추가 공개 방법 인 start()
과 stop()
이 추가되었습니다. 활동의 onResume()
및 onPause()
메소드에서 각각 호출합니다.
이것은 작동하는 것처럼 보이지만 여기서 덕트 테이프를 사용하고있는 것처럼 느껴집니다. 누구나 이것이 일반적으로 어떻게 수행되는지 알고 있습니까? 뭔가 놓치고있는 것처럼 느껴집니다 ...
오늘 나는 나 자신에게 같은 질문을했다. :) –