2012-03-23 5 views
2

저는 앱이 실행되는 동안 백그라운드에서 몇 가지를 추적하는 Android 앱을 개발 중입니다. 나는 안드로이드에서 초보자 다. 그래서 나는 내가하고 싶은 것을 설명하려고 노력할 것이다.Android 서비스가 10 초 후에 닫힙니다.

셋업 : MainActivity, TrackerActivity, TrackerService (서비스가 가동 잠금을 포함) 및 TrackerServiceWakeupReciever

TrackerService이 닫히고있을 때이 실행됩니다.

public class TrackerServiceWakeupReciever extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Intent serviceIntent = new Intent(); 
     serviceIntent.setAction("com.example.android.TrackerService"); 
     serviceIntent.putExtra("action", "checkSound"); 
     context.startService(serviceIntent); 
    } 
} 

TrackerActivity에서 서비스를 시작하는 코드 : 앱을 입력 할 때 MainActivity가 시작

Intent serviceIntent = new Intent(); 
serviceIntent.setAction("com.example.android.TrackerService"); 
startService(serviceIntent); 

TrackerActivity는 MainActivity에서 시작됩니다 때, 다음 TrackerService이 TrackerActivity의에서 onCreate에서 시작됩니다 . 이 서비스는 10 초 동안 닫히고 실행됩니다. 그런 다음 TrackerServiceWakeupReciever가 서비스를 다시 시작하고 10 초를 다시 실행하고 반복합니다.

왜 10 초만에 실행됩니까? 나는 MainActivity로 다시 돌아가서 sleep 버튼을 누르면 서비스가 계속 실행된다는 것을 알아 차렸다. 장치가 절전 모드에서 꺼져 있더라도 서비스가 실행 중입니다.

이 문제를 해결하는 방법은 무엇입니까? 그것을 파악하기 위해 1 주일을 사용했습니다. 나는 그것이 simpel 같아요 :)

미리 감사드립니다. Martin

+0

서비스를 오래 머물거나 원하는 시간을 말하고 싶습니까? – Rohit

답변

0

다른 (다른) BroadcastReceivers 중 하나의 어딘가에 goAsync() 처리되지 않은 구현이있을 수 있습니까? 10 초 후에 goAsync()에서 검색 한 PendingResult에 finish()를 호출하지 않은 경우 종료됩니다. 여기 문서를 참조하십시오 :

BroadcastReceiver

그렇지 않으면 아마도 (일반적으로) 당신이 너무 오래 무언가를 차단합니다.

관련 문제