2012-05-31 7 views
0

몇 가지 테스트를하고 있는데 안드로이드가 내 원격 Broadcastreceiver를 죽이고 있다고 생각합니다.Broadcastreceiver "Win Death"

지금 당장은 활동에서 내 Broadcastreceiver를 시작한 다음 브로드 캐스트 수신기가 매 순간 알람을 설정하여 다시 시작합니다. 이것은 몇 시간 (2 ~ 20 시간) 동안 훌륭하게 작동합니다. 그런 다음 "죽음을 당"합니다.

내가 왜 이것을 얻고 있는지, 내가 영구적으로 실행하도록 할 수있는 이유를 아는 사람이 있습니까?

D/ShutMeUp AlarmReceiver(16161): ALARM TRIGGERED <br> 
I/ShutMeUp AlarmReceiver(16161): Doing AWESOME stuff 
<br>I/ShutMeUp AlarmReceiver(16161): Month:May Day:Monday Hour:0 Min:10 
<br>D/ShutMeUp AlarmReceiver(16161): ALARM END 
<br>D/ShutMeUp AlarmReceiver(16161): ALARM TRIGGERED 
<br>I/ShutMeUp AlarmReceiver(16161): Doing AWESOME stuff 
<br>I/ShutMeUp AlarmReceiver(16161): Month:May Day:Monday Hour:0 Min:11 
<br>D/ShutMeUp AlarmReceiver(16161): ALARM END 
<br>I/ActivityManager(1904): Exiting application process se.davidsebela.ShutMeUp 
([email protected]) 
<br>I/WindowManager(1904): WIN DEATH: Window{4430bea8se.davidsebela.ShutMeUp/se.davidsebela.ShutMeUp.ShutMeUp paused=false} 
<br>I/WindowManager(1904): WIN DEATH: Window{441f17e8 se.davidsebela.ShutMeUp/se.davidsebela.ShutMeUp.Create paused=false} 
<br>I/ActivityManager(1904): Process se.davidsebela.ShutMeUp:remote (pid 16161) has died. 

답변

0

Activity life cycle

당신은 경우에 어쩌면있어 "우선 순위가 높은 앱은 메모리를 필요로"-> "응용 프로그램 처리 사망을".

Linux에서는 앱이 영구적으로 실행되고 있는지 확인할 수 없습니다.

0

코드가 활동에서 브로드 캐스트 - 수신자를 시작하는 경우, 안드로이드가 경험 한 것처럼 당신의 활동을 메모리에서 버릴 수 있기 때문에 활동 (또한 alarmmanager-entry)을 중지시켜야합니다.

나는 onResume()에 등록하고 onPause()에 등록을 취소합니다.

BroadCastReceiver가 메모리가 부족한 경우 다시로드되도록하려면 해당 매니페스트를 통해 BroadCastReceiver를 등록하는 것이 좋습니다. 이 경우 안드로이드는 로딩/언 로딩합니다.

[업데이트]

> I am starting my Broadcastreceiver from an activity 

난 당신이 코드 대신 매니페스트에 의해 브로드 캐스트 리시버를 등록이 문을 잘못 해석. 그것이 매니 페스트에 등록되어 있다면 안드로이드는 Broadcastreceiver 코드를 로딩하는 것을 처리합니다. 그래서 당신의 문제는 다른 것입니다.

+0

내 문제를 해결 한 생각 나는 %가 당신의 행동이 군주제를 당신이 무슨 뜻인지해야합니다, 당신이 있습니다 sugest 나는 매니페스트에서 수신기가 생각 hudred하고 있지 않다. \t \t 수신자 android : process = ": remote"android : name = "경보"> 안드로이드가 그것을 죽이면 어떻게 수신기를 다시 시작할 수 있습니까? –

+0

활동에서 시작 함을 의미 Intent intent = 새로운 의도 (Create.this, Alarm.class); sendBroadcast (의도); –

1

은 내가 setRepeating()

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), delayInMilli, pendingIntent);