2013-10-12 2 views
0

특정 침묵 기능을 처리하는 앱이 있지만 휴대 전화가 잠자기 상태이고 컴퓨터에 연결되어 있지 않으면 작동하지 않습니다. 화면이 켜지면 모든 것이 잘 작동하지만 전화기가 잠자기 상태 일 때 작동을 멈 춥니 다. 무엇이 잘못하고 있는지 알 수 있습니까? 나는 100 개의 다른 포스트를 여기에서 점검했다. 그러나 나는 단지 내 문제를 식별 할 수 없다.잠자기시 BroadcastReciever가 실행되지 않음

Intent intent2 = new Intent(this, Silence.class); 
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(this, 1000 + id, intent2, PendingIntent.FLAG_UPDATE_CURRENT); 
AlarmManager am2 = (AlarmManager)getSystemService(Activity.ALARM_SERVICE); 
am2.setRepeating(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, pendingIntent2); 

브로드 캐스트 리시버 :

public class MainSilenceCatcherVibrate extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent1) { 
    WakeLocker.acquire(context); 
    System.out.println("test"); 
    WakeLocker.release(); 
    } 
} 

매니페스트 사용 : 의도한다

내 알람 매니저

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<receiver android:name=".Silence"></receiver> 
<activity android:name=".ContactActivity"></activity> 

답변

0

을 난 그냥 캔트 내 문제를 식별

이벤트가 즉시 발생하고 1 주일 후에 다시 발생합니다 (AlarmManager.INTERVAL_DAY * 7,). 아마도 당신은 일주일을 기다리지 않았을 것입니다.

여기서 WakeLocker은 필요하지 않습니다. 모든 작업이 onReceive() 인 경우 시스템에 WakeLock이 보관됩니다. 밀리 초 이상 걸릴 작업이 있다면 onReceive()에서 수행하고 싶지는 않지만 그럴 경우 recommend WakefulBroadcastReceiver 또는 my WakefulIntentService을 자신의 WakeLock 솔루션에 적용 할 것입니다.

+0

나는 내 응용 프로그램에 들어가서 "지금"(테스트 할 때와 비교하여)에서 1 분만 발사하도록 지정했습니다. 그리고 화면이 켜져 있거나 디버깅을 위해 연결되어 있으면 문제가 없습니다. 문제는 내가 뭔가를 인쇄하는 대신에 자동 모드로 데려 가기 위해 묵비권을 행사할 때 컴퓨터에서 벗겨내어 (실제로 잠을 자도록) 나옵니다. 화면을 수동으로 켜고 이전에 화면을 켰을 때 자동 모드로 전환됩니다 (심지어 PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP을 사용하더라도 컴퓨터에 연결되어 있지 않으면 화면이 켜지지 않습니다). – Reaver

+0

@ user2523881 : ** 'adb shell dumpsys alarm' **을 사용하여 알람이 올바르게 구성되었는지 확인하십시오. STAMINA 모드를 제공하는 SONY Xperia를 사용하는 경우 사용을 중지하거나 허용 목록에 앱을 추가하십시오. – CommonsWare

+0

STAMINA 모드에 대한 도움말을 보내 주셔서 감사합니다. 그것이 나왔던 것에 따라, 나는 소니 Xperia를 얻었고, Xperia의 전지 최적화는 나의 응용이 방송을받을 수 없게한다. – Reaver