Android 8.0 (API 레벨 26)에는 사용자와 개발자를 위해 새로운 기능과 성능을 제공합니다. 이 문서에서는 개발자를 위한 새로운 기능을 소개합니다.
또한 <ph type="x-smartling-placeholder"></ph> Android 8.0 동작 변경사항: 플랫폼이 변경되는 영역 알아보기 앱에 영향을 미칠 수 있습니다
사용자 환경
PIP 모드
Android 8.0의 PIP 모드.
Android 8.0 (API 수준 26)에서는 활동을 PIP 모드를 사용하면 안 됩니다. PIP는 특별한 유형의 멀티 윈도우 모드 주로 동영상 재생에 사용됩니다. 원래 PIP 모드는 Android TV만 해당 Android 8.0에서는 이 기능을 사용할 수 있습니다. 다른 Android 기기에서도 이용할 수 있습니다.
활동이 PIP 모드에 있으면 일시 중지 상태이지만
콘텐츠를 계속 표시합니다. 따라서 앱이
onPause()
에서 재생을 일시중지하지 않음
처리됩니다. 대신 onStop()
에서 동영상을 일시중지했다가 onStart()
후에 다시 재생해야 합니다. 자세한 내용은
멀티 윈도우
수명 주기와 같습니다.
활동이 PIP 모드를 사용할 수 있도록 지정하려면
android:supportsPictureInPicture
를 true로 설정합니다.
(Android 8.0부터는 PIP에
android:resizeableActivity
매니페스트 속성.
하지만
활동이 다른 요소를 지원하는 경우 android:resizeableActivity
를 `true` 로
멀티 윈도우 모드).
Android 8.0 (API 수준 26)에는 새로운 객체 PictureInPictureParams
가 도입됩니다.
PIP 메서드에 전달하여 액티비티의 동작 방식을 지정합니다.
PIP 모드일 때 이 객체는
활동의 기본 가로세로 비율입니다.
기존 PIP 메서드는 추가 이제 PIP 모드를 Android TV뿐만 아니라 모든 Android 기기에서 사용됩니다. 또한 Android 8.0에서는 Android 8.1.0 이상을 지원하기 위해 다음과 같은 메서드를 제공합니다. PIP 모드:
Activity.enterPictureInPictureMode(PictureInPictureParams args)
: 활동을 PIP 모드로 전환합니다. 활동의 가로세로 비율 다른 구성 설정은 args에 의해 지정됩니다. 필드가 있는 경우 args가 비어 있는 경우 시스템은 마지막으로 실행되었을 때 설정된 값을 사용합니다.Activity.setPictureInPictureParams()
입니다.지정된 활동이 화면 모서리에 배치됩니다. 나머지 화면이 화면에 표시된 이전 활동으로 채워집니다. PIP 모드로 전환되는 활동이 일시중지 상태로 전환되지만 그대로 유지됩니다. 시작됩니다 사용자가 PIP 활동을 탭하면 시스템에서 상호작용할 사용자 활동이 있는 동안에는 터치 이벤트가 PIP 상태가 됩니다.
-
Activity.setPictureInPictureParams()
: 활동의 PIP 구성 설정을 업데이트합니다. 활동이 다음에 해당하는 경우 설정이 업데이트됩니다. 이는 포드의 액티비티의 가로세로 비율이 변경됩니다. 활동이 PIP 모드가 아닌 경우 이러한 구성 설정은enterPictureInPictureMode()
메서드를 호출합니다.
알림
Android 8.0 (API 레벨 26)에서는 다음과 같이 알림을 새롭게 디자인했습니다. 알림 동작을 더 쉽고 일관되게 관리할 수 있는 방법 제공 설정할 수 있습니다 변경사항은 다음과 같습니다.
- 알림 채널: Android 8.0 사용자 맞춤 채널을 만들 수 있는 알림 채널 선택합니다. 사용자 인터페이스는 알림 카테고리로 알림 채널에 추가합니다. 자세히 알아보려면 알림 채널을 구현하는 방법은 관리 알림 채널을 선택합니다.
- 알림 도트: Android 8.0부터 화면 표시 지원 점 또는 배지를 사용할 수 있습니다. 알림 표시 점은 사용자가 아직 닫거나 조치를 취하지 않은 알림이 있는지 확인합니다. 알림 표시 점을 사용하는 방법을 알아보려면 다음을 참조하세요. 알림 배지를 추가합니다.
- 다시 알림: 사용자가 알림을 일시 중지할 수 있으며 이렇게 하면 알림이 사라집니다. 다시 나타나기 전에 일정 시간 동안 재방문해야 합니다 알림이 표시될 때 처음과 동일한 중요도를 나타냅니다. 앱에서 삭제 또는 업데이트 가능 다시 알림이 설정되고 있지만 다시 알림으로 설정된 알림을 업데이트해도 합니다.
- 알림 시간 제한: 알림을 만들 때 시간 제한을 설정할 수 있습니다.
알림을 사용하여
setTimeoutAfter()
이 메서드를 사용하여 알림이 표시되기 전까지의 기간을 지정할 수 있습니다. 취소되어야 합니다. 필요한 경우 지정된 제한 시간이 경과하면 - 알림 설정:
setSettingsText()
앱의 링크를 생성할 때 표시되는 텍스트를 알림 설정을 사용하여 알림 설정을Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES
인텐트에 대한 응답 메시지입니다. 시스템은 필터링 인텐트와 함께 다음과 같은 추가 항목을 제공할 수 있습니다. 앱이 사용자에게 표시해야 하는 설정:EXTRA_CHANNEL_ID
NOTIFICATION_TAG
,NOTIFICATION_ID
- 알림 닫기: 사용자는 알림을 직접 닫을 수 있습니다.
앱에서 프로그래매틱 방식으로 삭제할 수 있습니다. 알림을 받는 경우
및
onNotificationRemoved()
메서드를NotificationListenerService
클래스. - 배경색:
있습니다. 이 기능은
현재 진행 중인 작업을 사용자가 한눈에 볼 수 있도록 합니다. 대상
예를 들어,
진행 중인 전화 통화를 수신할 수 없습니다. 또한
원하는 배경 색상을
setColor()
만들기setColorized()
를 사용하면 알림의 배경 색상을 사용할 수 있습니다. - 메시징 스타일: Android 8.0에서는
MessagingStyle
수업 표시 더 많은 콘텐츠가 표시됩니다. 먼저 수업MessagingStyle
개: 메시지 관련 알림이 있습니다. 또한addHistoricMessage()
메서드를 사용하여 다음을 추가하여 대화에 컨텍스트를 제공할 수 있습니다. 이전 메시지를 메시징 관련 알림에 추가할 수 있습니다
![Android 8.0 (API 수준 26)의 길게 누름 알림 메뉴](https://developer.android.com/static/images/about/versions/oreo/notification-long-press.png?authuser=0000&hl=ko)
사용자가 앱 런처 아이콘을 길게 눌러 볼 수 있음 알림 기능을 사용할 수 있습니다.
자동 완성 프레임워크
계정 생성, 로그인, 신용카드 거래는 시간이 걸리고 오류가 발생했습니다. 사용자는 이러한 유형이 필요한 앱으로 인해 쉽게 불만을 느낄 수 있습니다. 설계하는 방법을 배웠습니다
Android 8.0 (API 수준 26)에서는 로그인과 같은 양식 작성 자동 완성 프레임워크 도입으로 더욱 쉬워졌습니다. 사용자가 Autocomplete Framework를 선택하면 기존 앱과 새로운 앱이 자동 완성 프레임워크와 호환됩니다. 자동 완성
앱에서 프레임워크를 사용하는 방식을 최적화하기 위해 몇 가지 단계를 취할 수 있습니다. 자세한 내용은 자동 완성 프레임워크 개요를 참고하세요.
다운로드 가능한 글꼴
Android 8.0 (API 레벨 26) 및 Android 지원 라이브러리 26을 사용하면 제공하는 대신 글꼴을 APK에 번들로 묶거나 APK 다운로드 글꼴 이 기능을 사용하면 APK 크기가 줄어들고 앱 크기가 여러 앱이 동일한 글꼴을 공유할 수 있도록 합니다.
글꼴 다운로드에 대한 자세한 내용은 다운로드 가능한 글꼴
XML의 글꼴
Android 8.0 (API 레벨 26)에는 새로운 기능인 Fonts in XML이 도입됩니다.
글꼴을 리소스로 사용할 수 있습니다. 즉, 전체 글꼴 크기 때문에
글꼴을 번들로 묶을
애셋으로 설정하세요. 글꼴은 R
파일로 컴파일되며 자동으로
리소스를 제공합니다 그런 다음
새로운 리소스 유형 font
의 도움말
지원 라이브러리 26은 기기에서 이 기능을 완벽하게 지원합니다. API 버전 14 이상을 실행합니다
글꼴을 리소스로 사용하고 시스템 글꼴을 검색하는 방법에 대한 자세한 내용은 XML의 글꼴을 참고하세요.
TextView 자동 크기 조절
Android 8.0 (API 수준 26)에서는 텍스트 확장 또는 축소의 축소됩니다. 이것은 보다 쉽게 다양한 화면 또는 동적 콘텐츠로 텍스트 크기를 최적화할 수 있습니다. Android 8.0의 TextView 자동 크기 조절에 관한 자세한 정보는 TextView 자동 크기 조절을 참고하세요.
적응형 아이콘
Android 8.0 (API 수준 26)에는 적응형 런처 아이콘이 도입되었습니다. 적응형 아이콘은 비주얼 다양한 기기 모델에서 다양한 모양을 표시할 수 있습니다. 적응형 아이콘을 만드는 방법은 적응형 아이콘 참조하세요.
색상 관리
이미징 앱을 개발하는 Android 개발자는 이제 새로운 기기를 활용할 수 있습니다. 넓어진 색 영역을 표시할 수 있는 디스플레이 광고입니다. 넓은 색 영역 표시 앱이 매니페스트에서 플래그를 사용 설정해야 합니다 (활동별). 광범위한 색상 프로필 (AdobeRGB, Pro Photo RGB, DCI-P3 등).
WebView API
Android 8.0은 컨테이너 관리에 도움이 되는 여러 API를 제공합니다.
앱에 웹 콘텐츠를 표시하는 WebView
객체
앱의 안정성과 보안을 개선하는 이러한 API에는
있습니다.
- 버전 API
- Google SafeBrowsing API
- Termination Handle API
- 렌더기 중요도 API
이러한 API를 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요. WebView 관리.
이제 WebView
클래스에 Safe Browsing API가 포함되어 보안을 강화합니다.
웹 브라우징의 이점을 누릴 수 있습니다. 자세한 내용은
Google 세이프 브라우징 API.
바로가기 및 위젯 고정
Android 8.0 (API 레벨 26)에는 단축키와 있습니다. 앱에서 다음 앱을 위한 고정된 바로가기와 위젯을 만들 수 있습니다. 런처에 설치될 수 있습니다.
자세한 내용은 바로가기 및 위젯 고정 기능 가이드를 참조하세요.
최대 화면 가로세로 비율
Android 8.0 (API 수준 26)에서는 앱의 최대 가로세로 비율을 구성하는 방법이 변경되었습니다.
첫째, Android 8.0에는 maxAspectRatio 속성을 사용하면 앱의 최대 가로세로 비율을 설정하는 데 사용할 수 있습니다. 또한 Android 8.0 이상에서는 앱의 기본 최대 가로세로 비율은 앱이 실행되는 기기의 네이티브 가로세로 비율입니다.
최대 가로세로 비율 선언에 관한 자세한 내용은 다음을 참고하세요. 여러 화면 지원
다중 디스플레이 지원
Android 8.0 (API 수준 26)부터 이 플랫폼은 향상된 다중 디스플레이 지원을 제공합니다 활동이 멀티 윈도우 모드를 지원하고 다중 디스플레이가 있는 기기에서 실행되는 경우 사용자는 활동을 이동할 수 있고 다른 디스플레이로 이동하는 것입니다. 앱이 활동을 시작할 때 활동을 실행해야 하는 디스플레이를 지정할 수 있습니다.
참고: 활동이 Android 8.0에서는 자동으로 다중 디스플레이 지원을 제공합니다. 앱을 테스트하여 다중 디스플레이 환경에서 적절히 작동하는지 확인합니다.
한 번에 한 액티비티만 재개됨 상태가 될 수 있습니다. 앱에 여러 개의 디스플레이가 있습니다. 포커스가 있는 활동이 재개된 상태입니다. 다른 모든 표시되는 활동은 일시 중지되지만 중지되지는 않습니다. 자세한 내용은 여러 활동이 표시될 때 멀티 윈도우를 참조하세요. 수명 주기와 같습니다.
사용자가 한 디스플레이에서 다른 디스플레이로 활동을 이동하면 시스템은 는 활동의 크기를 조정하고 필요한 경우 런타임 변경을 실행합니다. 내 활동 구성 변경을 직접 처리하거나 시스템이 활동이 포함된 프로세스를 제거하고 새 측정기준에 따라 달라집니다. 자세한 내용은 구성 처리 변경사항.
ActivityOptions
는 사용자 지원을 위한 두 가지 새로운 메서드를 제공합니다.
다중 디스플레이:
setLaunchDisplayId()
- 활동이 시작될 때 활동을 표시해야 하는 디스플레이를 지정합니다.
getLaunchDisplayId()
- 활동의 현재 실행 디스플레이를 반환합니다.
adb 셸이 다중 디스플레이를 지원하도록 확장되었습니다.
이제 shell start
명령어를 사용하여 활동을 시작할 수 있습니다.
를 사용하여 활동의 타겟 디스플레이를 지정합니다.
adb shell start <activity_name> --display <display_id>
통합된 레이아웃 여백 및 패딩
Android 8.0 (API 수준 26)에서는 반대편 상황을 더 쉽게 지정할 수 있습니다.
동일한 여백 또는 패딩을 사용하는 View
요소의 경우
특히, 이제 레이아웃 XML에 다음 속성을 사용할 수 있습니다.
파일:
- <ph type="x-smartling-placeholder"></ph>
layout_marginVertical
는 다음을 정의합니다. <ph type="x-smartling-placeholder"></ph>layout_marginTop
및layout_marginBottom
를 동시에 사용하세요. - <ph type="x-smartling-placeholder"></ph>
layout_marginHorizontal
는 다음을 정의합니다. <ph type="x-smartling-placeholder"></ph>layout_marginLeft
및layout_marginRight
를 동시에 사용하세요. - <ph type="x-smartling-placeholder"></ph>
paddingVertical
는 다음을 정의합니다. <ph type="x-smartling-placeholder"></ph>paddingTop
및paddingBottom
를 동시에 사용하세요. - <ph type="x-smartling-placeholder"></ph>
paddingHorizontal
는 다음을 정의합니다. <ph type="x-smartling-placeholder"></ph>paddingLeft
및paddingRight
를 동시에 사용하세요.
참고: 앱의 로직을
서로 다른 다양한
언어 및 문화를 고려하는 것이 좋습니다
속성의 값은
<ph type="x-smartling-placeholder"></ph>
layout_marginStart
님,
layout_marginEnd
님,
paddingStart
또는
paddingEnd
이러한 값은
새로운 세로 및 가로 레이아웃 속성을 사용하여 레이아웃 동작을 만듭니다.
텍스트 방향에 따라 달라집니다.
포인터 캡처
게임, 원격 데스크톱, 가상화 클라이언트와 같은 일부 앱은 마우스 포인터를 제어하는 것이 좋습니다. 포인터 캡처는 기능은 모든 마우스 이벤트를 전달하여 이러한 제어를 제공하는 Android 8.0 (API 수준 26)의 기능입니다. 앱의 포커스 뷰에 집중할 수 있습니다
Android 8.0부터 앱의 View
가
포인터를 캡처하고 리스너를 정의하여 캡처된 포인터 이벤트를 처리합니다. 이
이 모드에서는 마우스 포인터가 숨겨집니다. 뷰는 포인터 캡처를 해제할 수 있음
더 이상 마우스 정보가 필요하지 않을 때. 또한 시스템은
뷰가 포커스를 잃을 때(예: 사용자가 열 때) 포인터 캡처
사용할 수 있습니다.
앱에서 이 기능을 사용하는 방법에 관한 자세한 내용은 다음을 참고하세요. 포인터 캡처.
앱 카테고리
Android 8.0 (API 수준 26)에서는 각 앱이 적합한 카테고리를 선언할 수 있음
가져올 수 있습니다. 이 카테고리는 유사한 앱을 클러스터링하는 데 사용됩니다.
데이터 사용량, 배터리 사용량,
저장용량 사용량. 앱의 카테고리를 정의할 때는
<application>
의 android:appCategory
속성
매니페스트 태그입니다.
Android TV 런처
Android 8.0 (API 수준 26)에는 새로운 콘텐츠 중심 Android TV 홈 화면 환경: Android TV 에뮬레이터 및 Android 8.0용 Nexus Player 기기 이미지 새로운 홈 화면에는 채널에 해당되는 행의 동영상 콘텐츠가 표시되며, 각 행에는 있습니다. 앱은 여러 채널을 게시할 수 있으며, 사용자가 게시할 채널을 표시할 수 있습니다. Android TV 홈 화면에는 다음 볼만한 동영상 행도 있습니다. 사용자의 시청 습관에 따라 앱의 프로그램으로 채워짐 앱은 또한 사용자가 프로그램에 초점을 맞추면 자동으로 재생되는 동영상 미리보기입니다. API는 채널과 프로그램을 채우는 작업은 Android용 TvProvider API로 배포되는 Android 8.0에서 라이브러리 모듈을 지원합니다.
AnimatorSet
이제 Android 8.0 (API 수준 26)부터 AnimatorSet
API가
있습니다. 탐색을 통해 애니메이션 세트의 위치를 특정
확인할 수 있습니다. 역방향 재생은 앱에 애니메이션이 포함된 경우 유용합니다.
실행 취소 가능한 작업을 확인하세요 두 개의 개별 애니메이션을
정의하는 대신
같은 내용을 반전하여 연주할 수 있습니다.
입력 및 탐색
키보드 탐색 클러스터
앱의 활동이 그림 2, UI 요소 그룹을 클러스터로 구성하여 사용할 수 있습니다. 사용자는 Chrome에서 Meta+Tab 또는 Search+Tab 한 클러스터에서 다른 클러스터로 이동할 수 있습니다. 좋은 예 클러스터에는 측면 패널, 탐색 메뉴, 기본 콘텐츠 영역, 요소가 포함됩니다. 여러 하위 요소를 포함할 수 있습니다.
![사용자가 방문하는 다섯 개의 탐색 클러스터가 포함된 활동 예시
키보드 탐색 클러스터 단축키를 사용하여
탐색할 수 있습니다 클러스터
상단 패널, 왼쪽 패널, 기본 콘텐츠와 같은 배열로 표시됩니다.
영역, 하단 패널, 플로팅 작업 버튼이 있습니다.](https://developer.android.com/static/images/about/versions/oreo/keyboard-navigation-clusters.png?authuser=0000&hl=ko)
View
또는 ViewGroup
요소 만들기
클러스터를 설정하려면
<ph type="x-smartling-placeholder"></ph>
android:keyboardNavigationCluster
속성
요소의 레이아웃 XML 파일에서 true
또는 true
를 전달합니다.
앱의 UI 로직에서 setKeyboardNavigationCluster()
로 설정합니다.
참고: 클러스터는 중첩되지 않지만 중첩될 수 없습니다.
클러스터는 계층 구조의 다른 수준에서 나타날 수 있습니다. 만약
프레임워크에서 최상위 네임스페이스인
ViewGroup
요소를 클러스터로 생성합니다.
터치 스크린이 있는 기기에서는 클러스터로 지정된
ViewGroup
객체의
요소 android:touchscreenBlocksFocus
개를 true
에서 다음 위치로
해당 클러스터 안팎으로의 클러스터 전용 탐색을 허용합니다. 이
사용자는 Tab 키나 화살표 키를 사용하여
클러스터 안팎으로 탐색합니다. 클러스터 탐색을 눌러야 하고
키보드 조합을 사용하세요.
기본 포커스 보기
Android 8.0 (API 수준 26)에서는View
(다시) 생성된 활동이 재개되고 사용자가
Tab 키와 같은 키보드 탐색 키입니다. '기본적으로 포커스됨'을 적용하려면
View
요소의
<ph type="x-smartling-placeholder"></ph>
android:focusedByDefault
속성을 true
UI 요소를 포함하는 레이아웃 XML 파일 또는 true
를
setFocusedByDefault()
내
UI 로직에 삽입하면 됩니다.
음성 출력
활동과 서비스는
TextToSpeech
: 콘텐츠를 받아쓰고 발음하는 데 사용됩니다. 기준 시간:
Android 8.0 (API 수준 26)부터 앱이 더 정확한 타이밍 정보를 얻을 수 있음
TTS(텍스트 음성 변환) 엔진이 합성된 개별 단어를 말하기 시작하는 시점과
엔진이 이 정보를 제공하는 한. 이 기능을 사용하면
TTS(텍스트 음성 변환) 엔진이 말할 때 특정 단어에 주의를 기울입니다.
있습니다.
앱에서 이러한 텍스트 음성 변환 엔진 개선사항을 사용하려면
UtteranceProgressListener
의 인스턴스입니다. Google Cloud의
핸들러에 포함되므로
onRangeStart()
메서드를 사용하여 축소하도록 요청합니다.
텍스트 음성 변환 엔진은
녹화하려면 rangeStart()
하세요
특정 범위의 텍스트에서 오디오가 재생될 것으로 예상되는 시점
시작합니다. 텍스트 범위의 오디오가 재생을 시작하면 앱의
onRangeStart()
메서드가 실행됩니다. 그러면 앱이 이 콜백에 다음과 같이 응답할 수 있습니다.
발화와 연결된 텍스트 범위를 강조 표시합니다.
텍스트 음성 변환의 재생 진행률 추적에 대한 자세한 내용
UtteranceProgressListener
클래스를 참고하세요.
참조
시스템
새로운 StrictMode 탐지기
Android 8.0 (API 수준 26)에는 식별에 도움이 되는 세 가지 새로운 StrictMode 감지기가 추가됨 버그는 다음과 같습니다.
detectUnbufferedIo()
에서 감지한 시점 앱에서 버퍼링 없이 데이터를 읽거나 쓰는데, 이로 인해 확인할 수 있습니다detectContentUriWithoutPermission()
에서 실행할 작업 앱이 실수로 다른 앱에 권한을 부여하는 것을 잊은 경우 이를 감지합니다. 활동을 시작할 수 있습니다.detectUntaggedSockets()
에서 감지한 시점 앱이 네트워크 트래픽을 수행할 필요 없이setThreadStatsTag(int)
: 디버깅을 위해 트래픽에 태그 지정 있습니다.
캐시된 데이터
Android 8.0 (API 수준 26)은 캐시된 데이터에 관한 더 나은 안내와 동작을 제공합니다. 각
이제 다음과 같이 캐시된 데이터를 위한 디스크 공간 할당량이 앱에 제공됩니다.
getCacheQuotaBytes(UUID)
시스템에서 디스크 공간을 확보해야 하는 경우 먼저 앱에서 캐시된 파일을 삭제합니다. 할당량을 초과하는 할당량으로 할당되는 알림을 표시합니다 따라서 캐시된 데이터를 캐시된 파일은 시스템에서 마지막으로 삭제되도록 할 때 있습니다. 시스템이 앱에서 어떤 캐시 파일을 삭제할지 결정할 때 (수정된 시간에 따라 결정됨) 가장 오래된 파일을 먼저 고려합니다.
또한 디렉터리별로 사용하여 제어할 수 있는 두 가지 새로운 동작도 있습니다. 시스템이 캐시된 데이터를 확보하는 방법:
StorageManager.setCacheBehaviorAtomic()
는 디렉터리와 그 안의 모든 콘텐츠를 단일 원자 단위로 삭제해야 한다는 것을 명심해야 합니다.setCacheBehaviorTombstone(File, boolean)
는 디렉터리 안의 파일을 삭제하는 대신 0바이트로 자르고 사용하여 빈 파일을 그대로 둡니다.
마지막으로, 대용량 파일을 위한 디스크 공간을 할당해야 하는 경우
allocateBytes(FileDescriptor, long)
API를 사용하면 자동으로 삭제되므로
다른 앱에 속하는 캐시된 파일 (필요한 경우)
기기에 새 데이터를 저장할 디스크 공간이 충분하므로
getAllocatableBytes(UUID)
getUsableSpace()
: 전자는 캐시된 데이터를 고려하고
자동으로 삭제할 수 있습니다
콘텐츠 제공자 페이징
대규모 한 번에 한 페이지씩 데이터 세트로 이동할 수 있습니다 수천 장의 사진이 있는 사진 앱을 예로 들 수 있습니다. 이미지는 페이지에 표시할 데이터의 하위 집합을 쿼리할 수 있습니다. 각 페이지 콘텐츠 제공자가 반환한 결과의 50%가 단일 커서로 표현됨 객체를 지정합니다. 클라이언트와 제공자는 모두 페이징을 구현하여 이 기능을 사용할 수 있습니다.
콘텐츠 제공자의 변경사항에 관한 자세한 내용은
ContentProvider
및
ContentProviderClient
입니다.
콘텐츠 새로고침 요청
ContentProvider
및
이제 ContentResolver
클래스에
refresh()
메서드에 전달하여 클라이언트가
요청하는 정보가 최신인지 확인합니다.
다음을 확장하여 맞춤 콘텐츠 새로고침 로직을 추가할 수 있습니다.
ContentProvider
이때
반환할 refresh()
메서드
true
: 사용자가 시도했던 것을 제공업체의 클라이언트에 나타냅니다.
데이터를 직접 새로고침합니다
클라이언트 앱은
다른 메서드 또는
refresh()
이 메서드를 호출할 때
메서드에서 새로고침할 데이터의 URI를 전달합니다.
참고: 네트워크를 통해 데이터를 요청할 수 있으므로
다음에서 refresh()
를 호출해야 합니다.
콘텐츠가 오래되었다는 강력한 표시가 있을 때만 클라이언트 측에 보냅니다.
이러한 유형의 콘텐츠 새로고침을 수행하는 가장 일반적인 이유는
스와이프하여 새로고침
최신 콘텐츠를 표시하도록 현재 UI에 명시적으로 요청합니다.
JobScheduler 개선 사항
Android 8.0 (API 수준 26)에서는 JobScheduler
의 다양한 개선사항이 도입되었습니다. 이러한 개선사항을 통해
새로운 배경의 준수를 위해
실행 제한: 일반적으로 예약된 작업을 사용하여
현재 제한된 백그라운드 서비스나 암시적 broadcast receiver에 의해 수신될 수 있습니다.
JobScheduler
업데이트에는 다음이 포함됩니다.
-
이제 작업 큐를 예약된 작업과 연결할 수 있습니다. 작업 항목을 추가하려면
작업의 큐에서
JobScheduler.enqueue()
작업이 실행 중일 때는 보류 중인 작업을 큐에서 제거하고 실행 중인 작업을 처리할 수 있습니다. 이 기능은 이전에는 상당히 효과적이었던 다수의 사용 사례를 처리합니다. 백그라운드 서비스, 특히 모바일 웹 애플리케이션을 구현하는IntentService
-
Android의 경우
지원 라이브러리 26.0.0에 동일한
JobIntentService
클래스가 도입됩니다.IntentService
로 기능을 수행하지만 (Android 8.0(API 수준 26) 이상에서 실행 시) -
이제 전화를 걸 수 있습니다.
JobInfo.Builder.setClipData()
드림ClipData
를 작업과 연결합니다. 이 옵션을 사용하면 이를 통해 URI 권한 부여를 작업과 연결할 수 있습니다. 권한은Context.startService()
에 전파될 수 있습니다. 인텐트와 함께 URI 권한 부여를 사용할 수도 있습니다. 작업 대기열에 추가할 수 있습니다 -
예약된 작업은 이제 몇 가지 새로운 제약 조건을 지원합니다.
<ph type="x-smartling-placeholder">
- </ph>
JobInfo.isRequireStorageNotLow()
- 기기의 사용 가능한 저장용량이 부족하면 작업이 실행되지 않습니다.
JobInfo.isRequireBatteryNotLow()
- 배터리 수준이 위험 수준 이하이면 작업이 실행되지 않음 기준 기기에서 배터리 부족으로 배터리 부족이 표시되는 수준입니다. 경고 시스템 대화상자가 표시됩니다.
NETWORK_TYPE_METERED
- 대부분의 모바일 데이터와 마찬가지로 작업을 사용하려면 데이터 전송량 제한이 있는 네트워크 연결이 필요합니다. 확인할 수 있습니다
사용자설정 데이터 스토어
Android 8.0 (API 레벨 26)에서는 기본 설정에 맞춤 데이터 스토어를 제공하여 앱이 기본 설정을 클라우드 또는 로컬 데이터베이스에 저장하는 경우 또는 환경설정이 기기별인 경우 자세한 내용은 자세히 알아보려면 맞춤 데이터 스토어.
미디어 개선
VolumeShaper
새로운 VolumeShaper
클래스가 있습니다. 사용
페이드 인, 페이드 아웃 및 크로스 페이드와 같은 짧은 자동 볼륨 전환을 실행합니다.
VolumeShaper로 진폭 제어를 참조하세요.
를 참조하세요.
오디오 포커스 개선
오디오 앱은 오디오 포커스를 요청하고 중단하는 방식으로 기기에서 오디오 출력을 공유합니다.
앱은 재생을 시작 또는 중지하거나 볼륨을 더킹하는 방식으로 포커스의 변화를 처리합니다.
새로운 AudioFocusRequest
클래스가 있습니다. 이 클래스를
requestAudioFocus()
,
오디오 포커스의 변경사항을 처리할 때 앱에 다음과 같은 새로운 기능이 있습니다.
자동 볼륨 낮추기와
포커스 게인 지연.
미디어 지표
새 getMetrics()
메서드는 PersistableBundle
를 반환합니다.
구성을 포함하는 객체
특성과 값의 맵으로 표현되는 성능 정보를 제공합니다.
getMetrics()
메서드는 다음 미디어 클래스에 관해 정의됩니다.
MediaPlayer.getMetrics()
MediaRecorder.getMetrics()
MediaCodec.getMetrics()
MediaExtractor.getMetrics()
측정항목은 각 인스턴스에 대해 개별적으로 수집되며 인스턴스 수명입니다. 측정항목을 사용할 수 없는 경우 메서드가 다음을 반환합니다. null입니다. 반환되는 실제 측정항목은 클래스에 따라 다릅니다.
MediaPlayer
Android 8.0 (API 수준 26)부터 MediaPlayer에서 재생 가능 DRM 보호 소재 및 HLS 샘플 수준 암호화된 미디어를 모두 지원합니다.
Android 8.0에는 새로운 오버로드된
seekTo()
명령어를 사용하면
컨트롤을 조작할 수 있습니다. 여기에는 탐색 모드를 지정하는 두 번째 매개변수가 포함됩니다.
SEEK_PREVIOUS_SYNC
: 미디어 위치를 동기화 (또는 키) 프레임으로 이동 특정 시점 직전 또는 특정 시점에 위치한 데이터 소스와 연결됩니다.SEEK_NEXT_SYNC
는 미디어 위치를 연결된 동기화 (또는 키) 프레임으로 이동합니다. 특정 시점 직후 또는 지정된 시간에 있는 데이터 소스로 교체할 수 있습니다.SEEK_CLOSEST_SYNC
: 미디어 위치를 동기화 (또는 키) 프레임으로 이동 지정된 시간에 가장 가깝거나 지정된 시간에 위치한 데이터 소스와 연결됩니다.SEEK_CLOSEST
는 미디어 위치를 프레임으로 이동합니다 (반드시 동기 아님). 또는 키프레임)을 포함할 수 있습니다. 확인할 수 있습니다.
지속적으로 탐색하는 경우 앱은 SEEK_CLOSEST
가 아닌 SEEK_
모드를 사용해야 합니다. 이 모드는 비교적 느리게 실행되지만 더 정확할 수 있습니다.
MediaRecorder
- 이제 MediaRecorder는 다음에 유용한 MPEG2_TS 형식을 지원합니다.
스트리밍:
Kotlin
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS)
자바
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_2_TS);
MediaMuxer
이제 개수 제한 없이 오디오와 동영상 스트림을 처리할 수 있습니다. 제한이 해제되었습니다. 하나의 오디오 트랙 및/또는 하나의 동영상 트랙에 연결됩니다.addTrack()
사용 원하는 만큼 트랙을 믹싱할 수 있습니다.MediaMuxer
는 사용자가 정의한 프레임당 하나 이상의 메타데이터 트랙을 추가할 수도 있습니다. 확인할 수 있습니다 메타데이터의 형식은 애플리케이션에 의해 정의됩니다. 이 메타데이터 트랙은 MP4 컨테이너에만 지원됩니다.
메타데이터는 오프라인 처리에 유용할 수 있습니다. 예를 들어, 자이로 신호는 이 센서는 동영상 흔들림 보정을 실행하는 데 사용될 수 있습니다.
메타데이터 트랙을 추가할 때 트랙의 MIME 형식은 접두사로 시작해야 합니다.
'application/'으로 설정합니다. 메타데이터 쓰기는 다음을 제외하면 동영상/오디오 데이터 쓰기와 동일합니다.
MediaCodec
에서 가져온 데이터가 아님을 확인합니다. 대신 앱은
ByteBuffer
및
writeSampleData()
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다.
타임스탬프는 동영상 및 오디오 트랙과 동일한 시간 베이스에 있어야 합니다.
생성된 MP4 파일은 섹션에 정의된 TextMetaDataSampleEntry
를 사용합니다.
ISOBMFF 12.3.3.2를 사용하여 메타데이터의 MIME 형식 신호를 보냅니다. MediaExtractor
를 사용하여 메타데이터 트랙이 포함된 파일을 추출하는 경우 MIME
메타데이터 형식이 MediaFormat
로 추출됩니다.
개선된 미디어 파일 액세스
이
<ph type="x-smartling-placeholder"></ph>
저장소 액세스 프레임워크 (SAF)를 통해 앱은 맞춤
DocumentsProvider
: 파일에 대한 액세스 권한을 제공할 수 있습니다.
데이터를 다른 앱에
할당할 수도 있습니다 실제로
문서 제공자가 파일에 대한 액세스를 제공할 수도
또는 네트워크 스토리지에 상주하거나
미디어 전송 프로토콜 (MTP).
그러나 원격 데이터 소스에서 대용량 미디어 파일에 액세스하려면 과제:
- 미디어 플레이어는 문서 제공자의 파일에 대해 검색 가능한 액세스를 요구합니다. 대용량 미디어 파일이 원격 데이터 소스에 있는 경우 문서 제공자는 모든 데이터를 미리 가져와서 스냅샷을 만들어야 함 파일 설명자입니다. 파일이 없으면 미디어 플레이어에서 재생할 수 없습니다. 설명어이므로 문서 제공자가 완료될 때까지 재생을 시작할 수 없습니다. 있습니다.
- 사진 앱과 같은 미디어 수집 관리자는 일련의 범위 지정 옵션을 통해 외부 SD 카드에 저장된 미디어에 연결하도록 URI에 액세스합니다. 폴더를 만들 수 있습니다 이러한 액세스 패턴은 이동, 복사, 삭제는 상당히 느립니다.
- 미디어 수집 관리자가 지정한 문서의 위치를 결정할 수 URI입니다. 이로 인해 이러한 유형의 앱에서는 사용자가 콘텐츠를 선택할 수 없으며, 미디어 파일을 저장할 위치를 지정합니다.
Android 8.0은 저장소 액세스를 개선하여 이러한 각 문제를 해결합니다. 프레임워크입니다.
사용자설정 문서 제공자
Android 8.0부터 저장소 액세스 프레임워크는 맞춤 문서 제공자를 사용하여 저장소에 있는 파일에 대해 검색 가능한 파일 설명자를 생성할 수 원격 데이터 소스입니다. SAF는 파일을 열어 네이티브 탐색 가능한 파일을 가져올 수 있음 설명어입니다. 그런 다음 SAF는 개별 바이트 요청을 문서로 전달합니다. 제공업체 이 기능을 사용하면 문서 제공자가 정확한 범위를 반환할 수 있습니다. 미디어 플레이어 앱이 요청한 바이트의 전체 바이트를 파일을 미리 준비해 둡니다.
이 기능을 사용하려면 새
StorageManager.openProxyFileDescriptor()
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다. 이
openProxyFileDescriptor()
메서드는 ProxyFileDescriptorCallback
객체를 콜백으로 허용합니다. SAF는
클라이언트 애플리케이션이
파일 설명자를 반환합니다.
직접 문서 액세스
Android 8.0 (API 레벨 26)부터
getDocumentUri()
메서드를 사용하여
지정된 mediaUri
와 동일한 문서를 참조하는 URI를 가져옵니다.
그러나 반환된 URI는
DocumentsProvider
, 미디어 컬렉션 관리자가 액세스할 수 있음
직접 문서를 삭제할 수 있습니다.
따라서 미디어 관리자는 문서에 대해 파일 작업을 수행할 수 있습니다.
훨씬 더 빠르게
도출할 수 있습니다
주의: getDocumentUri()
메서드는 미디어 파일만 찾습니다. 앱에 권한을 부여하지 않으며
해당 파일에 액세스할 수 있는 권한이 있어야 합니다. 액세스 권한을 얻는 방법에 대해 자세히 알아보려면
자세한 내용은 참조 문서를 확인하세요.
문서의 경로
Android 8.0 (API 레벨 26)에서 저장소 액세스 프레임워크를 사용할 때는
findDocumentPath()
메서드(둘 다 사용 가능)
DocumentsContract
및
<ph type="x-smartling-placeholder">DocumentsProvider
</ph>
클래스에 따라 파일 시스템의 루트에서
있습니다. 이 메서드는
DocumentsContract.Path
객체. 파일이
동일한 문서에 대해 여러 개의 정의된 경로가 있는 경우 이 메서드는
지정된 ID가 있는 문서에 도달하기 위해 가장 자주 사용되는 경로입니다.
이 기능은 다음과 같은 상황에서 특히 유용합니다.
- 앱에서 '다른 이름으로 저장'을 사용하는 경우 클러스터의 위치를 표시하는 확인할 수 있습니다
- 앱이 검색 결과 뷰에 폴더를 표시하며 하위 항목을 로드해야 함 사용자가 선택한 경우 특정 폴더 내에 있는 문서를 찾을 수 있습니다. 있습니다.
참고: 앱에 일부 문서에만 액세스할 수 있는 권한이 있는 경우
가 있는 경우 findDocumentPath()
의 반환 값에는
앱이 액세스할 수 있는 폴더와 문서를
설정할 수 있습니다
오디오 재생 모니터링
AudioManager
시스템 서비스는
각 활성 AudioPlaybackConfiguration
객체
에는 특정 오디오 재생 세션에 대한 정보가 포함됩니다. 앱에서 할 수 있는 작업
다음을 호출하여 현재 활성화된 구성 집합을 가져올 수 있습니다.
getActivePlaybackConfigurations()
Android 8.0 (API 레벨 26)부터,
하나 이상의
객체 AudioPlaybackConfiguration
개가 변경되었습니다. 이렇게 하려면
registerAudioPlaybackCallback()
를 호출하여
AudioManager.AudioPlaybackCallback
입니다. 이
AudioManager.AudioPlaybackCallback
클래스에는 다음이 포함됩니다.
onPlaybackConfigChanged()
메서드로, 오디오가 재생될 때 시스템에서 호출합니다.
변경할 수 있습니다.
연결
Wi-Fi Aware
Android 8.0 (API 수준 26)은 Neighbor를 기반으로 하는 Wi-Fi Aware에 대한 지원을 추가합니다. Awareness Networking (NAN) 사양 적절한 Wi-Fi Aware 하드웨어, 앱 및 근처 기기가 찾아서 통신할 수 있습니다. 인터넷 액세스 포인트 없이 Wi-Fi를 통해. 우리는 하드웨어와 가능한 한 빨리 Wi-Fi Aware 기술을 기기에 도입할 것입니다. 대상 Wi-Fi Aware를 앱에 통합하는 방법에 관한 자세한 내용은 Wi-Fi Aware를 참고하세요.
블루투스
Android 8.0 (API 수준 26)은 다음을 추가하여 플랫폼의 블루투스 지원을 강화합니다. 기능:
- 곡-라이브러리 탐색이 가능한 AVRCP 1.4 표준 지원.
- BLE(Bluetooth Low-Energy) 5.0 표준 지원.
- Sony LDAC 코덱을 블루투스 스택에 통합.
호환 기기 페어링
Android 8.0 (API 레벨 26)은 페어링 요청 대화상자를 블루투스, BLE, Wi-Fi가 있습니다. 자세한 내용은 호환 기기 페어링을 탭합니다.
Android에서 Bluetooth를 사용하는 방법에 관한 자세한 내용은 블루투스 가이드를 참조하세요. 대상 블루투스 변경 사항이 있는 경우 Android 8.0 (API 레벨 26)에만 적용되는 경우 Bluetooth 섹션의 Android 8.0 동작 변경사항 페이지.
공유
스마트 공유
Android 8.0 (API 수준 26)은 맞춤형 공유 콘텐츠 유형별로 사용자의 선호도를 파악하여 공유할 수 있습니다. 예를 들어 사용자가 영수증 사진을 찍으면 Android에서는 8.0이 지출 추적 앱을 제안할 수 있음 사용자가 셀카를 찍으면 소셜 미디어에서 앱이 이미지를 더 잘 처리할 수 있습니다. Android 8.0은 이 모든 것을 자동으로 학습하여 사용자의 패턴을 학습한 후 맞춤설정할 수 있습니다.
스마트 공유는 image
이외의 콘텐츠 유형에서 작동합니다. 예를 들면 다음과 같습니다.
audio
님, video
님, text
님, URL
님
기타
스마트 공유를 사용 설정하려면 ArrayList
를 최대 3개까지 추가하세요.
문자열 주석을 추가하는 것입니다. 주석은
콘텐츠의 주요 구성요소나 주제를 설명합니다. 다음 코드 예
인텐트에 주석을 추가하는 방법을 보여줍니다.
Kotlin
val annotations: ArrayList<String> = arrayListOf( "topic1", "topic2", "topic3" ) intent.putStringArrayListExtra( Intent.EXTRA_CONTENT_ANNOTATIONS, annotations )
자바
ArrayList<String> annotations = new ArrayList<>(); annotations.add("topic1"); annotations.add("topic2"); annotations.add("topic3"); intent.putStringArrayListExtra( Intent.EXTRA_CONTENT_ANNOTATIONS, annotations );
스마트 공유 주석에 대한 자세한 내용은 다음을 참고하세요.
EXTRA_CONTENT_ANNOTATIONS
텍스트 분류기
호환되는 기기에서 앱은 새로운 Text Classifier를 사용하여
문자열이 알려진 분류 기준 항목 유형과 일치하고 추천 선택 항목이 제공됨
대안으로 사용할 수 있습니다. 시스템이 인식하는 엔터티에는 주소, URL,
전화번호, 이메일 주소 등이 있습니다. 자세한 내용은
TextClassifier
접근성
Android 8.0 (API 레벨 26)은 직접 접근성 서비스를 만드는 개발자의 경우
- 조정을 위한 새로운 볼륨 카테고리 접근성 볼륨을 입력합니다.
- 지문 동작을 입력 메커니즘으로 사용합니다.
- 다국어 지원 TTS(텍스트 음성 변환) 기능을 지원합니다.
- 하드웨어 기반 접근성 단축키를 사용하세요.
- 지원 대상: 계속 동작 또는 프로그래매틱 방식의 획 시퀀스입니다.
- 접근성 사용 설정된 여러 접근성 기능 중 하나를 호출하는 버튼 (소프트웨어 렌더링 탐색 영역을 사용하는 기기에서만 사용 가능).
- 표준화 단방향 범위 값을 사용합니다.
- 다양한 기능을 처리 중 더 쉽게 텍스트를 찾을 수 있습니다. 있습니다.
보안 및 개인 정보 보호
권한
Android 8.0 (API 수준 26)에는 전화 통신과 관련된 몇 가지 새로운 권한이 도입되었습니다.
-
ANSWER_PHONE_CALLS
권한을 통해 앱에서 응답할 수 있습니다. 프로그래매틱 방식으로 걸려온 전화를 받을 수 있습니다. 수신 전화를 처리하기 위해 실행 중인 경우acceptRingingCall()
메서드를 사용하여 축소하도록 요청합니다. -
READ_PHONE_NUMBERS
권한은 앱에 읽기 액세스 권한을 부여합니다. 기기에 저장된 전화번호입니다.
이러한 권한은 모두
위험한
그리고 둘 다
PHONE
권한 그룹입니다.
새로운 Account Access 및 Discovery API
Android 8.0 (API 레벨 26)에서는 앱은 사용자 계정에 액세스할 수 있습니다. 자신이 관리하는 계정의 경우 인증자는 자체 정책을 사용하여 계정 숨기기, 계정에 공개하도록 설정할 수 있습니다. Android 시스템은 액세스할 수 없습니다.
이전 버전의 Android에서는
사용자 계정은 다음이 있는 계정을 포함하여 모든 계정에 대한 업데이트를 받아야 했습니다.
관련이 없는 유형일 수 있습니다. Android 8.0은
addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[])
메서드를 사용하면 앱이 계정 유형 목록을 지정할 수 있습니다.
계정 변경사항을 수신해야 합니다.
API 변경사항
AccountManager는 인증자가 사용할 새 메서드를 6가지 앱은 계정을 볼 수 있습니다.
setAccountVisibility(android.accounts.Account, java.lang.String, int)
: 특정 사용자 계정 및 패키지의 공개 상태 수준을 설정합니다. 조합할 수 있습니다.-
getAccountVisibility(android.accounts.Account, java.lang.String)
: 특정 사용자 계정 및 패키지의 공개 상태를 가져옵니다. 조합할 수 있습니다. -
getAccountsAndVisibilityForPackage(java.lang.String, java.lang.String)
: 인증자가 API에 대한 계정 및 가시성 수준을 가져올 수 있습니다. 있습니다. -
getPackagesAndVisibilityForAccount(android.accounts.Account)
: 인증자가 지정된 계정의 저장된 가시성 값을 가져올 수 있습니다. -
addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle, java.util.Map<java.lang.String, java.lang.Integer>)
: 인증자가 계정의 공개 상태 값을 초기화할 수 있습니다. -
addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[])
:OnAccountsUpdateListener
리스너를AccountManager
객체 시스템은 이 리스너를 호출합니다. .
Android 8.0 (API 수준 26)에는 가시성을 지정하기 위해 두 개의 특수 Package Name 값이 도입됨
애플리케이션의 특정 레벨을
setAccountVisibility(android.accounts.Account, java.lang.String, int)
메서드를 사용하여 축소하도록 요청합니다. 이
PACKAGE_NAME_KEY_LEGACY_VISIBLE
공개 상태 값은
GET_ACCOUNTS
대상 버전 및
Android 8.0 미만이거나
서명이 모든 Android 버전을 타겟팅하는 인증자와 일치합니다.
PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE
기본 공개 상태 값을 제공합니다.
이전에 설정되지 않았고
PACKAGE_NAME_KEY_LEGACY_VISIBLE
이(가) 다음 제외:
있습니다.
새 Account Access 및 Discovery API에 대한 자세한 내용은 다음을 참고하세요.
참조:
AccountManager
및
OnAccountsUpdateListener
입니다.
테스트
계측 테스트
Android 8.0 (API 수준 26)은 앱의 도구 작동 테스트입니다.
비기본 앱 프로세스에 대해 실행
이제 특정 계측 테스트를 실행하도록 지정할 수 있습니다. 프로세스를 하지 않을 수도 있습니다. 이 구성은 서로 다른 프로세스에서 실행되는 여러 활동이 앱에 포함되어 있습니다.
기본이 아닌 프로세스 계측을 정의하려면 매니페스트로 이동하세요.
파일을 드래그 앤 드롭한 다음 원하는
<ph type="x-smartling-placeholder"></ph>
<instrumentation>
요소
android:targetProcess
속성을 적용하고 값을 다음 중 하나로 설정합니다.
다음과 같습니다.
- 특정 프로세스의 이름.
- 쉼표로 구분된 프로세스 이름 목록.
- 계측 실행을 허용하는 와일드 카드 (
"*"
) 에 지정된 패키지의 코드를 실행하는 모든 시작된 프로세스에 대해android:targetPackage
속성
계측 테스트가 실행되는 동안
getProcessName()
를 호출하여 테스트합니다.
테스트 중에 결과 보고
이제 계측 테스트가 실행되는 동안 결과를 보고할 수 있습니다.
addResults()
를 호출하면 됩니다.
테스트용 가짜 인텐트
앱의 UI를 위한 격리되고 독립적인 UI 테스트를 더 쉽게
Android 8.0 (API 레벨 26)에서는
onStartActivity()
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다. 이 메서드는
특정 처리를 위한 Instrumentation.ActivityMonitor
클래스
인텐트에 포함되어야 합니다.
테스트 클래스가 인텐트를 호출하면 메서드가 스텁을 반환합니다.
Instrumentation.ActivityResult
객체를 실행하는 대신
인텐트 자체입니다. 테스트에서 이 모의 인텐트 로직을 사용하면
이 API에 전달하는 인텐트를 준비하고 처리하는 방법에 대한
완전히 다른 앱으로 연결할 수 있습니다.
런타임 및 도구
플랫폼 최적화
Android 8.0 (API 레벨 26)은 다양한 성능 개선이 가능합니다. 이러한 최적화에는 동시 압축 가비지 컬렉션, 더 효율적인 메모리 사용과 코드 지역성을 제공합니다.
이러한 최적화를 통해 부팅 시간이 단축되고 두 VM 모두에서 성능이 향상됩니다. 실행할 수 있습니다.
Java 언어 지원이 업데이트되었습니다.
Android 8.0 (API 레벨 26)은 여러 개의 추가적인 OpenJDK Java API에 대한 지원을 추가합니다.
- OpenJDK 8의
java.time
입니다. - OpenJDK 7의
java.nio.file
및java.lang.invoke
새로 추가된 API 참조 문서를 확인하세요.
Android 스튜디오에서 Java 8 언어 기능을 사용하려면 최신 미리보기 버전을 다운로드하세요.
업데이트된 ICU4J Android 프레임워크 API
Android 8.0 (API 수준 26)은
ICU4J Android 프레임워크
API(ICU4J API의 하위 집합)를 앱 개발자가
사용합니다.android.icu
이 API는 현지화 데이터를 사용하여
이에 따라 APK 사용 공간을 줄일 수 있습니다. 따라서 APK를
APK의 ICU4J 라이브러리
표 1. 사용되는 ICU, CLDR 및 유니코드 버전 되었습니다.
Android API 레벨 | ICU 버전 | CLDR 버전 | 유니코드 버전 |
---|---|---|---|
Android 7.0 (API 레벨 24), Android 7.1 (API 레벨 25) | 56 | 28 | 8.0 |
Android 8.0(API 수준 26) | 58.2 | 30.0.3 | 9.0 |
Android의 국제화에 관한 자세한 내용은 ICU4J 지원에 대한 자세한 내용은 를 참조하세요. Android의 다국어 지원
Android 엔터프라이즈
다음을 실행하는 기기를 위한 새로운 엔터프라이즈 기능과 API가 도입되었습니다. Android 8.0 (API 수준 26) 주요 특징은 다음과 같습니다.
- 완전 관리형 기기의 직장 프로필을 통해 기업은 개인 정보를 보호하는 동시에 두 가지를 모두 관리할 수 있습니다.
- API 위임을 통해 기기 소유자와 프로필 소유자가 앱을 할당할 수 있습니다. 다른 애플리케이션에 대한 액세스를 제공합니다
- 프로비저닝 흐름의 사용자 환경 개선( 설정 시간이 단축됩니다.
- 기업에서 블루투스, Wi-Fi, 백업, 보안에 대한 새로운 제어 기능을 통해 더 많은 기기를 관리할 수 있습니다. 기업에서 추적하도록 도와주는 네트워크 활동 로깅 발생할 수 있습니다.
이러한 API와 기타 새로운 Android Enterprise API 및 기능에 관해 자세히 알아보려면 Android 엔터프라이즈를 참조하세요.