제목과 마찬가지로 다른 앱이 실행 (전화가 왔거나 사용자가 집 등을 치기)하여 앱이 포커스를 잃을 때를 감지해야합니다.Android : 다른 활동이 시작될 때 감지 (또는 내 활동이 포커스를 잃을 때)
Activity.OnStop은 내 앱 내에서 활동을 전환 할 때에도 호출되므로 Override Activity.OnStop이 작동하지 않습니다.
제목과 마찬가지로 다른 앱이 실행 (전화가 왔거나 사용자가 집 등을 치기)하여 앱이 포커스를 잃을 때를 감지해야합니다.Android : 다른 활동이 시작될 때 감지 (또는 내 활동이 포커스를 잃을 때)
Activity.OnStop은 내 앱 내에서 활동을 전환 할 때에도 호출되므로 Override Activity.OnStop이 작동하지 않습니다.
AFAIK Android는이 기능을 제공하지 않습니다. 직접 추적 할 수 있습니다 (예 : 활동 중 하나의 onStop()
이 호출되고 X 기간 내에 다른 활동의 onStart()
이 호출되지 않으면 다른 일부 앱의 활동이 포그 라운드에 있음).
나는 그것을 시험해 보았다. 그러나 문제는 onStop이 실제로 새로운 활동 onStart 후에 약 15 초 동안 해고되었다는 것이다. – FlySwat
그러면 일이 쉬워 질 것입니다. 정적 인 AtomicInteger를 사용하여 활성 활동 수를 유지합니다. 정적 이니셜 라이저에서 0으로 설정하십시오. 모든 활동의 onStart()에서 증가시킵니다. 모든 활동에서 onStop()으로 감소 시키십시오. onStop()에서 감소 후에 값이 0이면 15 초 동안 화면에 아무런 활동도 없었으므로 잠시 사라 졌음을 알 것입니다. 개인적으로 안드로이드는 실제로 애플리케이션 경계를 홍보하도록 설계되지 않았기 때문에 걱정하지 않으셔도됩니다. – CommonsWare
'onPause()'가이 시나리오에서 더 정확하지 않습니까? –
난 당신이 사용할 수 있으리라 생각합니다 :
onWindowsFocusChanged (부울 hasFocus) 당신의 활동에서
합니다.
ICS가 높아질 수 있습니다.
이것은 안드로이드 사이트에서 가져온 것입니다
는 사용자가 UI를 종료 할 때 통지하려면 onTrimMemory 액티비티 클래스에서() 콜백을 구현합니다. 이 방법을 사용하여 이 방법을 사용하여 TRIM_MEMORY_UI_HIDDEN 수준을 수신해야합니다. 은 UI가 현재 보이지 않게되어 있음을 나타내고 사용자의 UI에서만 사용하는 리소스를 해제해야합니다. 앱이 앱 프로세스의 모든 UI 구성 요소가 사용자로부터 숨겨진 될 경우에만 TRIM_MEMORY_UI_HIDDEN와 onTrimMemory() 콜백을 수신
알 수 있습니다.
은 자세한 내용 http://developer.android.com/training/articles/memory.html이 페이지를 참조하십시오
[안드로이드, 다른 응용 프로그램이 실행될 때 감지]의이것은 나를 위해 큰 일을했습니다. 감사! – masterwok
가능한 중복 (http://stackoverflow.com/questions/3290936/android-detect-when-other- apps-are-launched) – Sam