2012-12-28 8 views
1

캔버스와 ImageView를 사용하여 맞춤 아날로그 시계 앱 위젯을 쓰고 있습니다.Android BroadcastReceiver Vs 서비스

위젯 공급자의 onEnabled 이벤트에서 매분 최고 시간대에 알람을 설정했습니다. 알람은 시계 그리기를 담당하는 BroadcastReceiver를 호출합니다.

비트 맵을 어느 시점에 저장 했으므로 그리기 시간을 줄이십시오. 그러나 onUpdate가 반환되면 BroadcastReceiver가 죽어서 비트 맵을 유지할 수 없습니다.

먼저 BroadcastReceiver에 무엇인가 저장하는 방법이 있는지 알고 싶습니까?

비록 내가 종료되지 않기 때문에 BroadcastReceiver 대신 서비스를 사용하고 있습니다. 하지만 어쨌든 나는 이것이 좋은지 아닌지 모르겠다.

그리고 서비스에 대한 몇 가지 일반적인 질문이 있습니다

  1. 나는 서비스가 안드로이드 시스템에 의해 살해 당할 수 있다는 선가을? 이라면 AlarmManager가 다시 시작합니까?

  2. 이 중요하지 않으므로 기기를 깨우지 않고 기기 이 켜지면 매우 빨리 업데이트 될 수 있습니다. 그 서비스는 백그라운드에서 실행됩니다. 서비스를 사용하고 AlarmManager로 전화를 걸면 기기를 잠자기 상태로 둡니 다.

그리고 이것은 내 시계가 모습입니다 :

enter image description here

답변

1

당신이 broadcastreciever, 당신은 sharedprefrences 또는 sqllite 또는 필요가 당신에 따라 파일을 사용할 수 있습니다 동안 뭔가를 저장하고 복원하려면 다음 번에. 저장 소개 : http://developer.android.com/guide/topics/data/data-storage.html

브로드 캐스트 리시버는 그들이 필요한 시간에 실행하고 필요하지 않으면 서 시스템 리소스를하지. 임의의 이벤트 (예 : 들어오는 SMS와 같은) 또는 긴 백그라운드 처리 (예 : 방송 레코더가 죽임)를 기다려야하는 경우 서비스를 사용할 수 있습니다.

서비스는 안드로이드 시스템에 의해 사망하고 서비스에 따라 시스템에 의해 복원됩니다. 이 동작은 controled되어 어떤하여 onStartCommand 함수가 반환 값 :, http://developer.android.com/reference/android/app/Service.html#START_STICKY

+0

를 따라서 : - - 의도를 다시 시작 서비스 = null이 START_NOT_STICKY START_STICKY 당신이 다른 옵션에 대해 여기 읽을 수

서비스를 다시 시작하지 않습니다 내 경우에 무슨 제안이 있니? 수령인 또는 서비스? – Ali

+0

나는 AlarmManager와 BroadcastReciever를 사용했다. AlarmManager가 장치를 웨이크 업하는지 여부를 정의 할 수 있습니다. – Raanan

관련 문제