2013-09-03 3 views
2

내 응용 프로그램은 일련의 활동이며 응용 프로그램을 서브 클래 싱하지 않았습니다. 되풀이 타이머 (java.util.Timer)를 실행하는 정적 싱글 톤 클래스가 있습니다. 사용자가 응용 프로그램을 종료 할 때 해당 타이머를 일시 중지해야합니다.전체 애플리케이션에 대해 onPause가 있습니까?

활동이 하나 뿐인 경우 MainActivity의 onPause() 및 onResume() 타이머를 일시 중지했다가 다시 시작할 수 있습니다. 내 문제는 어떻게 해결해야합니까?

답변

1

나는 onDestroyonCreate이 적절하게 호출되는 것을 발견, 그래서 나는 사람들을 무효화한다.

모든 활동에 대해 및 onStart을 재정의하는 것은 새 활동이 시작될 때마다 타이머가 일시 중지되고 다시 시작되므로 번거로울 수 있습니다.

2

이 정적 싱글 톤이있는 경우 모든 활동에서 onPause()onResume()을 호출 할 수 있습니다.

코드 중복을 줄이기 위해 호출을 Activity의 하위 클래스에 넣습니다. 모든 활동에서이 새 하위 클래스를 확장하십시오. 모든 activitys은 당신이 사용할 수있는 응용 프로그램 내에서 영업을하고, 앱을 폐쇄 isFinishing 인 경우()

@Override 
public void onPause() {   

     if(isFinishing()){ 
//code to finish() all activitys threads etc..... 
}    

    super.onPause(); 
} 
+0

그런 다음 좋은 디자인이 아닌 모든 활동에서 onPause() 및 onResume()을 구현해야합니다. – Andreas

+0

하위 클래스에 넣을 수 있으며 새 하위 클래스에서 각 활동을 확장 할 수 있습니다. – flx

1

타이머는 및 onResume입니다. 그런 다음 다른 모든 활동을 BaseActivity에서 파생시킵니다.

4

BaseActivity를 만들고 일시 정지 및 재개 당신의 onPause()에서 호출 될 경우

+1

하나의 활력 (A1)이 있고 다른 하나를 시작할 경우 A2 : A1_pause, A2_create/start/resume, A1_stop. 따라서 새로운 활동을 시작할 때마다 타이머를 시작/중지하고 싶지 않으면 추가 로직을 추가해야합니다. – Leonidos

-1

여러 가지 작업을 수행 할 수 있습니다

  1. 그냥 아무것도하지 않고, 사용자가 심지어 정적 싱글이 메모리에서 해제 될 것입니다, 앱이 중지됩니다 모든 활동을 떠나 당신의 모든 오브젝트 때.

  2. 이 싱글 톤을 통해 활성 활동을 추적하고 아무도 활동하지 않을 때 타이머를 일시 중지합니다.

+0

1. 테스트에서 타이머가 계속 실행됩니다. MainActivity 만 시작한 다음 "뒤로"버튼을 사용하여 남겨 둡니다. LogCat에서 디버그 메시지를 계속 볼 수 있습니다. 설정 -> 앱을 통해 앱을 종료하면 중지됩니다. – Andreas

+0

쿨, 잘 시도 2 ​​번, 내 아래의 해답이 좋아 보인다. –

관련 문제