안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
Background에서 실행되는 어플은
Broadcast Receiver vs. Service 두가지 중 하나로 해야되고, Broadcast Receiver는 10초 이내에 처리되야 된다고 알고 있습니다.
제가 하려고 하는 건
특정 번호로 SMS가 도착하면
SMS 내용만을
웹으로 post 전송하는 것이고요,,,
(웹에서는 SMS 내용 중 "일정단어"가 들어가 있으면 mysql로 DB에 저장됩니다.)
1. 이런 정도의 처리에는 둘 중 어느 것으로 처리해야되나요?
제가 Broadcast Receiver로 일단 했는데, wifi 환경에서 test해보니까 잘 되더라고요,,,
2. 네트워크 상황이 안 좋을 때는 Broadcast Receiver로 처리가 잘 안 될 수도 있을까요?
3. 만약 서비스로 구현하려면
manifest에서 <receiver> ~~~~ </receiver>,
*.java에서 public class SmsReceiver extends BroadcastReceiver 를 extends Service로만 바꾸면 되는건가요?
고수님들의 답변 부탁드립니다.
감사합니다.




그냥 전송하는것 뿐이라면 BroadcastReceiver에서 new Thread(ㅁㅇㄴㄹㅁㄴㄹ).start() 처럼 걍 던져 놓는 식으로 하면 됩니다.
이미 리턴되었기 때문에 ANR에도 걸리지 않구요.
물론 확장성을 고려한다면.. 서비스에서 하는게 좋지요. BroadcastReceiver 이게 제약이 좀 있어서요..
서비스로 구현하시려면 manifest에서 태그명을 service로 바꿔주셔야 하구요. 그에 맞게 attribute도 변경해주셔야 되구요.
Service랑 BroadcastReceiver는 다른 클래스기 때문에 그렇게 바꾸면 에러 나구요.
일단 문자메시지는 BroadcastReceiver로 받기 때문에, 여기서 Service로 넘겨주는 식으로 처리해야 합니다.