어떤 '특정' 액티비티가 떴을 때,
전화가 오거나 화면이 뒤로 넘어가도 계속 실행되는 로직을 구현하고 싶은데요...
이 경우 서비스를 사용해야 되나요, 아니면 쓰레드를 사용해야 하나요?
(이 액티비티를 벗어나면 해당 로직은 종료되도록 하고 싶습니다.)
Receiver 를 받아서 Service 이용해서 처리하면, 작업의 연속성이 끊기지 않는지요?
제가 원하는건 만약 100초까지 센다고 하면 전화 통화한 시간 포함하여 카운트를 하고 싶은 것이거든요.
(멈추지 않고...)
Timer와 TimerTask를 이용하시면 편하게 하실수 있을거 같네요.
전 전화가 오면 그 이벤트에 대해서 어떠한 작업이 발생하게끔하고 싶다는 글로 ......
제가 올리신글을 잘못이해했네요...
제가 글을 띄엄띄엄봤나봐요.....>.<
앗 사실 타이머는 그냥 예로 든 거라서요.,
제가 구현하고 싶은 로직이 굉장히 복잡한 로직이라서요.ㅠ
(실시간 처리가 필요한 로직인데, 전화가 와서 끊기면 실시간성이 잃는지라...)
네트워크를 사용하는 처리 로직이라면 3G에 대해서 생각을 하셔야 할거고...
그게 아니라면 서비스 보다는 Thread나 AsyncTask를 사용하시면 될거 같아요.
위에 말씀 드렸다 시피 서비스는 10초 이상되는 동작에 대해서는 책임 지지 않는다는......>.<
서비스로 써도 됩니다. 서비스의 응답성 때문에 주저할 필요는 없습니다.
서비스는 응답을 빨리 주면 되는것이죠...
스레드를 쓰는건 맞습니다.
그런데 그 스레드를 굳이 엑티비티에서 관리하면 소스보기가 힘듭니다.
그리고 그 스레드 관리를 하는 엑티비티의 생명주기와 스레드가 가져야 하는 생명주기가 다르다면 문제가 됩니다.
서비스에서 스레드를 관리하면 됩니다.
다시 강조하지만 서비스가 응답만 빨리 주면 되는 것이라서 백그라운드에서 해야할 것이라고 생각되면
서비스 하나 만들고 그쪽에서 스레드를 관리하게 하면 편합니다.
그리고 그렇게 떨어뜨려두면 백그라운드 작업이 엑티비티의 생명주기에 영향을 안받는다는것이죠...
이것은 실제로 꼭 필요한 경우들이 있습니다.
전화가 왔을때는 Receiver를 사용해서 처리하셔야하고요.
Receiver에서 받아서 Service를 이용하여 처리 하시면 될것 같네요.
화면이 뒤로 넘어간다는건 백그라운드로 간다는 말씀이신지?...