안녕하세요. 초보개발자 이상한김씨입니다.
질문이 생겨서 이렇게 들어왔습니다.
1. Main Activity가 죽어도 Service를 유지할 수 있는 방법이 있나요?
2. Main Activity에서 저장되어 있는 시간리스트를 Service로 옮기고 싶은데 어떤 방법을 써야되나요?
Activity끼리 Intent를 써서 데이터를 옮기긴 해봤습니다만 이 방법으로는 많은 데이터를 옮길 수 없을거 같아서요.
다른 어떤 방법이 있는건가요?
-- 알람과 비슷한 기능입니다만 지정된 시간에 (매시라던지 매일에 ) Notify와 함께 메세지 출력하는 처리를 하려고 합니다.
-- Service에서는 Thread를 써서 매 시분초를 체크 하고 해당 시간에 해당 작업을 하도록 작업을 했습니다.
-- 이렇게 작업하는 방법 말고 더 좋은 방법이 있다면 알려주시면 감사하겠습니다 ^^
갑작스런 질문 드려서 죄송합니다. 방법이 있으면 알려주시면 감사하겠습니다~^^
특정시간마다 이벤트를 발생시키고 싶으시면 AlarmManager에 리스너를 등록하여 사용하시면 됩니다.
서비스와 상호작용할 수 있는 방법이 약 3가지 정도 되는데 적절한 방법을 사용하시면 됩니다.
1. Skarz님이 말씀하신 AIDL - 이건 프로세스를 넘나들기 때문에 프로세스를 넘어서 데이터를 전송할일이 없다면 이방법을 안쓰셔도 됩니다.
2. 서비스와 로컬바인딩 - 서비스와 로컬바인딩을 통해서도 상호작용 할 수 있는데 이와 관련된 예제로는 ApiDemos에 LocalServiceBinding 부분을 보시면 됩니다. 액티비티에서 서비스 인스턴스를 얻어서 메서드를 호출할 수 있는 방법이 나와있습니다.
3. 서비스는 알아서 동작하고 서비스에서 무슨일이 있을 때 Broadcast 하기 - 이렇게 구성하면 액티비티에서는 브로드캐스트 리시버만 구현해서 등록해두고 이벤트가 들어오면 해당되는 적절한 작업을 하면되죠




1. 서비스랑 액티비티는 어플의 이름만 공유되는것일뿐 다르게 동작되어서 메인액티비티가 죽어도 서비스는 구동됩니다.
2. 오브젝트를 옮길때 Serialize인 Parcelble이 존재합니다. 옮길땐 AIDL을 이용해야합니다.
자바에선 Thread로 매번 시분초를 체크하는것이 아주 흔한 일이지만 사실 이것은 CPU에 매우 부담을 주는 일입니다.
알람과 같이 일정 시간마다 행동을 취해야 할때는 Timer의 TimeTask를 이용하시는것이 CPU에도 좋고 설정에도 좋습니다.
더 중요한 사실은 알람이 저장되는 API를 지원해서 사실상 매 시간마다 체크를 할 필요가 없습니다.
Notification쪽 클래스 였던걸로 기억하는데 막상 안떠오르네요..