2012-09-24 4 views
0

나는 내 응용 프로그램 클래스에 전역 사용을 위해 일부 개체를 저장하는 응용 프로그램이 있습니다. 내가 Application 클래스 살해되고 싶지 않아 (내가 그 안에 저장되어있는 정보를 필요로하기 때문에) 그래서 난 확인하기 위해 onLowMemory() 함수를 재정의했습니다 Thread.sleep(1000)android 응용 프로그램 클래스 onLowMemory

Application 클래스가 깨어 때 무슨 일이 일어날 지

메모리가 여전히 부족하다면? onLowMemory()를 다시 호출합니까?

내 응용 프로그램과 백그라운드 서비스가 실행되는 동안이 응용 프로그램 클래스가 시스템에 의해 종료되지 않도록 올바른 아키텍처는 무엇입니까?

+0

정의에 따르면 응용 프로그램 인스턴스는 "내 응용 프로그램과 백그라운드 서비스가 실행중인 동안에는 시스템에 의해 종료되지 않습니다". Application 개체는 프로세스 수명 동안 존재합니다. 그러나 Android는 언제든지 어떤 이유로 든 프로세스를 종료 할 수 있으며 이로 인해 백그라운드 서비스와 Application 인스턴스가 제거됩니다. – CommonsWare

+0

나는 응용 프로그램을 사용하는 STICKY 백그라운드 서비스를 가지고 있습니다. 백그라운드가 다시로드되거나 원래 응용 프로그램 인 경우 응용 프로그램이 다시로드되었는지 어떻게 확인할 수 있습니까? –

+0

가 더 정확할 것입니다 - 내 백그라운드 서비스가 죽었다가 다시 만들어 내 애플리케이션 객체의 변수를 다시 초기화 할 수 있는지 어떻게 알 수 있습니까? –

답변

2

하지 마세요!

  1. 시스템 앱을 죽이는에서 시스템을 방해하지 않는
  2. 메모리가 여전히 낮을 것이다 호출을 차단하지
  3. 확인하여 응용 프로그램을 만들 수있는 방법은 없습니다

살해 당하지 않는다. 파일을 sharedpreference, 파일 또는 sqlite db 중 필요에 맞는 데이터로 저장하고 응용 프로그램 인스턴스에 의존하지 마십시오.

0

호출시 해당 함수를 신뢰하면 안됩니다. 안드로이드는 백그라운드에있는 한 언제든지 응용 프로그램을 죽일 수 있으며, 실제로 멈추거나 시도 할 수는 없습니다. 이 함수를 호출하면 응용 프로그램이 일부 캐시를 지우거나 메모리를 확보 할 수있는 모든 작업을 수행 할 수 있습니다. 그것은 문서에서 결론 지을 수 있습니다.

http://developer.android.com/reference/android/app/Application.html#onLowMemory()

시도는에 의존 방지 할 수 있습니다. OnPause, OnStop 또는 onDestroy 또는 이와 유사한 방법으로 전화를 걸어 응용 프로그램을 준비 할 수있는 작업을 수행하십시오. 이는 파일이나 데이터베이스에서 중요한 변수, 데이터 또는 다른 것을 저장한다는 것을 의미합니다.

관련 문제