2013-12-09 4 views
2

응용 프로그램에서 임시 파일을 만들고 있습니다. 그리고 응용 프로그램이 파괴되면 그 파일을 삭제해야합니다. 현재 onDestroy() 메소드에서이 deleteTempFile() 메소드를 호출하고 있습니다. 하지만 개발자 가이드에서 알 수 있듯이 앱이 죽을 때 호출되지 않도록 보장합니다. 이것을 성취하는 올바른 방법은 무엇입니까?onDestroy() 항상 호출되지 않음

onDestroy은 홈 버튼을 누른 다음 다시 길게 누르면 작업 관리자가 나타나고 앱을 스 와이프하여 종료시킬 수 있습니다.

+0

앱 파기 상태를 식별하기 어렵습니다. 앱이 백그라운드/포 그라운드로 갈 때 파일을 제거/복원하는 것이 적합할까요? –

+0

문제는 비디오 플레이어를 사용하여 임시 파일을 재생할 때 앱이 백그라운드로 이동하는 것입니다. 나는 그 시점에서 그것을 삭제하면 안된다. – Shashika

답변

1

onSaveBundleInstances에 그 일을 시도 (번들 outBundle)

+0

onSaveBundleInstances는 활동이 일시 중지되면 호출됩니다. onPause와 비슷합니다. 하지만 앱이 죽을 때까지 임시 파일이 필요합니다. 실제로는 비디오 파일입니다. 따라서 내 앱에는 비디오 플레이어를 사용하여 재생하는 기능이 있습니다. 그러나 우리가 해당 비디오 플레이어를 OnSaveBundleInstances 및 onPause에 시작하는 경우에도 호출됩니다. – Shashika

+1

문제는 onDestroy()에 대한 호출을 보증 할 수 있으므로 onSaveBundleInstances()가 가장 안전한 이벤트이거나 그렇지 않으면 해결 방법이 필요합니다. :) –

+0

나는 이것을 달성하기 위해 onSaveBundleInstances를 사용해야 할 것처럼 보입니다. 하지만 많은 콜 백을 구분해야합니다. – Shashika

-1
@Override 
public void onPause() { 
    super.onPause() 
    if (isFinishing()) 
     deleteTempFile(); 
} 
+2

답장을 보내 주셔서 감사합니다. 하지만 제 상황에서는 홈 버튼을 먼저 누르십시오. 그래서 isFinishing() = false로 onPause가됩니다. 그런 다음 앱을 죽이기 위해 문지르면 나는 다시 멈추지 않습니다. – Shashika

0

들의 OnDestroy()는 그래서 다른 방법은 당신이 deleteTempFile에 대한 onBackPressed() 메서드를 사용합니다 모든 시간을 작동하지 않습니다().

+1

뒤로 키를 사용하여 앱을 종료하지 않습니다. 홈 버튼을 누른 다음 길게 눌러 다시 작업 관리자를 가져와 앱을 스 와이프하여 종료합니다. 그것이 시나리오입니다. – Shashika

관련 문제