매니페스트 등록 브로드캐스트 의도는 Android Oreo에서 몇 개로만 제한되며 ACTION_SHUTDOWN은 그중 하나가 아닙니다. 아니면 그렇습니까?
Android는 다양한 용도로 브로드캐스트 인텐트를 사용합니다. 앱 개발자는 SD 카드가 저장소로 마운트된 시기를 애플리케이션이 알 수 있도록 MEDIA_MOUNTED 브로드캐스트 인텐트와 같은 특정 작업을 수행하도록 들을 수 있습니다. 앱 개발자는 이를 위해 브로드캐스트 수신기를 프로그래밍한 다음 미디어가 마운트될 때마다 함수를 호출할 수 있습니다(예: 앱의 기본 저장 디렉터리를 SD 카드로 변경). 이런 종류의 것이 방송 의도가 사용되는 것입니다. 이는 주로 해당 정보가 필요할 수 있는 모든 응용 프로그램에 특정 시스템 이벤트를 브로드캐스트하는 데 사용됩니다. Broadcast Receiver는 Android 매니페스트 파일에 등록하거나 포그라운드에 있을 때 프로그래밍 방식으로 등록해야 합니다.
모든 종류의 브로드캐스트를 구현하는 다양한 개발자로 인해 발생하는 풍부한 메모리 스래싱으로 인해 자주 발생하는 인텐트에 대한 수신기인 Google은 Android에서 이러한 브로드캐스트 인텐트 대부분에 대한 액세스를 제한하기로 결정했습니다. 8.0 오레오. 하지만 회사는 몇 가지 중요한 방송 의도가 있다는 것을 인식했습니다. 자주 발생하지 않아 기억을 유발할 가능성이 거의 없기 때문에 여전히 주의를 기울여야 합니다. 문제. 그들 암시적 브로드캐스트 화이트리스트 게시 Android 매니페스트에 브로드캐스트 수신기를 등록하여 Android 애플리케이션이 계속 수신 대기할 수 있는 인텐트입니다. 이 목록은 광범위한 목록으로, 한 가지 예외를 제외하고 앱 개발자로서 필요할 수 있는 거의 모든 것을 다루고 있습니다.
Google은 많은 애플리케이션에서 사용되는 브로드캐스트 의도를 나열하지 않은 것으로 보입니다. 이것이 ACTION_SHUTDOWN 방송 의도. 이 인텐트는 기기가 종료될 때 전송됩니다. 이는 앱 개발자에게 매우 중요할 수 있으므로 프로세스가 종료되기 전에 앱이 수행 중인 모든 작업을 신속하게 종료할 수 있습니다. 이 브로드캐스트 의도가 화이트리스트 의도 목록에 나타나지 않음에도 불구하고 애플리케이션은
~할 수 있다 실제로는 여전히 매니페스트에 등록된 방송 수신기를 통해 청취합니다. 커밋에 따르면 Android Git에서는 Google이 이를 목록에 포함하는 것을 잊어버렸습니다.Google이 기기가 종료되는 시점을 감지하는 기능을 애플리케이션에서 제거했기 때문에 실제로 허용 목록에 포함되어 있다는 점이 좋습니다. 일부 애플리케이션은 기기가 종료되기 전에 더 이상 작업을 빠르게 저장할 수 없기 때문에 사용자와 앱 개발자 모두에게 좋지 않습니다. 왜 이 브로드캐스트 의도가 개발자를 위한 Google 페이지에 나열되지 않는지 완전히 확신할 수는 없지만 베테랑 Android 개발자와 이야기를 나눴습니다. 커먼즈웨어 그는 이것이 Google 측의 단순한 문서 오류일 가능성이 높다는 데 동의합니다. 그에 따르면 이런 일이 처음은 아닐 것이라고 한다.