2012-07-05 2 views
0

PowerManager.goToSleep (...) 호출에 대한 응답으로 시스템에 의해 때때로 파괴되는 활동이 있습니다. 그 행동은 일관성이 없기 때문에 나는 그 이유를 알 수 없다.PowerManager.goToSleep이 호출되면 활동이 파괴됩니다.

protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 

     requestWindowFeature(android.view.Window.FEATURE_NO_TITLE); 

     IntentFilter userprsentfilter = new IntentFilter(Intent.ACTION_USER_PRESENT); 
     mUserPresentReceiver = new UserPresentReceiver(); 
     registerReceiver(mUserPresentReceiver,userprsentfilter); 

     Log.d(TAG, "created."); 
    } 

    protected void onDestroy() { 
     Log.d(TAG, "finished."); 
    } 

어딘가에,

, 먼 서비스에 때로는 활동 자체 PowerManager :

여기에 코드의 대부분의 관련 부분 내 활동의에서 onCreate에 대한 관련 코드입니다. goToSleep (SystemClock.uptimeMillis())

라고 불리는 활동이 발생하여 파괴됩니다.

누구나 PowerManager.goToSleep을 호출 할 때 시스템에서 때때로 작업을 삭제하려고하는 이유에 대해 알려주실 수 있습니까? 또한 시스템에 의해 파괴되는 활동의 가능성을 확실하게 낮추거나 줄일 수있는 방법이 있습니까? 이런 일이 발생할 때 자원이 부족하지 않다는 것을 확실히 말할 수 있습니다.

+0

'goToSleep'방법을 어떻게 부르시겠습니까? http://stackoverflow.com/questions/5710971/android-what-permissions-required-to-call-powermanager-gotosleepn-put-device-i – greenoldman

답변

3

모든 Android 앱은 언제든지 종료 될 수 있습니다. 앱이 배경으로 설정되거나, 너무 많은 시스템 리소스를 사용하거나, 휴대 전화가 잠자기 상태 일 때 이런 일이 발생할 수 있습니다. 당신은 그 행동을 바꿀 수는 없으며 그렇게하려고해서는 안됩니다 : 이것은 의도적으로 그리고 아주 좋은 이유로 이것을합니다.

이러한 상황에서 계속 실행해야하는 작업이있는 경우이를 서비스로 구현해야합니다. 이렇게하면 휴대 전화가 잠자고있을 때도 실행됩니다.

관련 문제