2012-02-12 5 views
0

화면이 켜져 있는지 여부에 관계없이 실행해야하는 Android 2.2에 앱을 만들려고합니다.내 앱 유지 - Android

나는 서비스를 통해 그것을 깨달으려고했지만 전화가 화면을 멈추고 서비스가 멈추고 나는 왜 그런지 이해하지 못한다. 사용자가

및 서비스 클래스

의에서 onCreate-방법에

Notification notification = new Notification(); 
startForeground(1, notification); 

(나는 시도 버튼을 누를 때 내 응용 프로그램에서

나는

startService(new Intent(this, MyService.class)); 

를 사용 그것도 onStart() 메서드 내에서)

(나는 또한 startForeground()의 id 필드가 너무 기대하고 무엇을 찾을 수 없습니다 내가 사용하는 1)

서비스 후, 그래서 그것을 실행 여부를 알고 전화의 무한한 진동 패턴을 시작해야하거나 아니. 그러나 화면을 끄면 즉시 진동이 멈 춥니 다.

도와주세요. 나는 그 문제를 해결할 수 방법을 모르는 (그리고 구글은 큰 도움이되지 못했습니다)

+0

활동을 일시 중지하거나 종료 할 때'stopService'를 호출합니까? –

답변

1

안드로이드 장치가 유휴 상태 일 때 (예를 들어, 화면이 꺼져있을 때), 위해 절전 모드로 전환 데이빗 감사

배터리를 절약 할 수 있습니다.

서비스를 계속 실행하려면 WakeLock을 받아야합니다. this one과 같이 사용 방법에 대한 많은 자습서가 있습니다.

항상 서비스를 실행하면 배터리가 소모됩니다. 또한 필요하지 않을 때 wakelock을 해제해야합니다. 그렇지 않으면 전화가 항상 깨어납니다.

0

'onStartCommand()'에서 'START_STICKY'을 (를) 반환 해보세요. 이렇게하면 서비스를 계속 실행하고 필요한 경우 화면을 켜지 않고 다시 시작합니다.

는 알림 또는 알람 관리자 서비스 실행이 화면에 빛과 키 가드 때

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

그래서이

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
    final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock"); 
    kl.disableKeyguard(); 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK 
            | PowerManager.ACQUIRE_CAUSES_WAKEUP 
            | PowerManager.ON_AFTER_RELEASE, "MyWakeLock"); 
    wakeLock.acquire(); 

와의 매니페스트 파일을 시도 http://developer.android.com/reference/android/app/Service.html#START_STICKY

0

에서보세요 이 문제가있는 사람에게 효과가 있기를 바랍니다.

관련 문제