Android 의 서비스는 어떤 역할을 합니까?
Service 는 Local Service 를 실행 중인 경우 기본 프로세스의 main 스레드에서 실행되는 Android 메커니즘입니다. 예: onCreate, onStart 이러한 함수는 시스템에 의해 호출될 때 주 프로세스의 메인 스레드에서 실행됩니다. Remote Service 의 경우 해당 서비스는 독립 프로세스의 main 스레드에서 실행됩니다. 따라서 서비스를 스레드로 해석하지 마십시오. 스레드와는 전혀 관계가 없습니다! \x0d\\x0d\ 그렇다면 왜 서비스를 사용해야 할까요? 사실 이것은 Android 의 시스템 메커니즘과 관련이 있습니다. 우리는 먼저 Thread 를 들어보겠습니다. Thread 의 실행은 Activity 와는 별개입니다. 즉, Activity 가 finish 에 의해 실행된 후, Thread 를 적극적으로 중지하지 않았거나 Thread 의 run 메소드가 실행되지 않으면 Thread 도 계속 실행됩니다. 그래서 여기에 문제가 있습니다. Activity 가 finish 에 의해 만들어진 후에는 더 이상 Thread 에 대한 참조를 가지고 있지 않습니다. 반면에, 당신은 다른 Activity 에서 같은 Thread 를 통제할 수 없다. \x0d\ \x0d\ 예를 들어, Thread 가 일정 기간 동안 서버에 연결하여 동기화를 해야 하는 경우 Activity 에 start 가 없을 때도 Thread 를 실행해야 합니다. 이때 start 가 Activity 를 시작하면 해당 Activity 내에서 이전에 만든 Thread 를 제어할 수 없습니다. 따라서 모든 Activity 가 동일한 Service 를 제어할 수 있고 시스템에 해당 Service 의 인스턴스가 하나만 생성되므로 Service 를 생성 및 시작하고 Service 내에서 Thread 를 생성, 실행 및 제어해야 합니다. \x0d\ \x0d\ 따라서 서비스를 메시지 서비스로 생각할 수 있으며, Context 가 있는 모든 곳에서 Context.startService, Context.stopService, context 를 호출할 수 있습니다 서비스에 broadcastReceiver 를 등록하고 다른 곳에서 Broadcast 를 전송하여 제어할 수도 있습니다. 물론 이것들은 모두 Thread 가 할 수 없습니다.