| page.title=다중 창 지원 |
| page.metaDescription=Android N에서 한 번에 둘 이상의 앱을 표시하도록 지원. |
| page.keywords="multi-window", "android N", "split screen", "free-form" |
| |
| @jd:body |
| |
| <div id="qv-wrapper"> |
| <div id="qv"> |
| <h2>이 문서의 내용</h2> |
| <ol> |
| <li><a href="#overview">개요</a></li> |
| <li><a href="#lifecycle">다중 창 수명 주기</a></li> |
| <li><a href="#configuring">앱을 다중 창 |
| 모드로 구성</a></li> |
| <li><a href="#running">앱을 다중 창 모드에서 실행</a></li> |
| <li><a href="#testing">앱의 다중 창 지원 테스트</a></li> |
| </ol> |
| <h2>참고 항목</h2> |
| <ol> |
| <li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">다중 창 |
| 플레이그라운드 샘플 앱</a></li> |
| <li><a class="external-link" href="https://medium.com/google-developers/5-tips-for-preparing-for-multi-window-in-android-n-7bed803dda64">Android N에서 다중 창을 준비하기 위한 5가지 팁</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| <p> |
| Android N은 둘 이상의 앱을 동시에 표시하기 위한 지원을 |
| 추가합니다. 핸드헬드 기기에서 두 개의 앱을 <em>화면 분할</em> 모드에서 |
| 나란히 또는 상하로 실행할 수 있습니다. TV 기기에서 앱이 |
| <em>PIP(Picture-In-Picture)</em> 모드를 사용하는 경우 사용자가 다른 앱과 상호작용하는 |
| 동안에 계속 동영상을 재생할 수 있습니다. |
| </p> |
| |
| <p> |
| N Preview SDK로 앱을 빌드하는 경우, 앱이 다중 창 |
| 표시를 처리하는 방식을 구성할 수 있습니다. 예를 들어, 액티비티의 |
| 최소 허용 치수를 지정할 수 있습니다. 또한 앱에 |
| 대해 다중 창 표시를 비활성화할 수도 있으며, 이 경우 시스템은 앱을 전체 화면 모드에서만 |
| 표시합니다. |
| </p> |
| |
| <h2 id="overview">개요</h2> |
| |
| <p> |
| Android N에서는 여러 앱이 동시에 화면을 공유할 수 있습니다. 예를 들어, 사용자가 화면을 분할하여 왼쪽에서는 웹페이지를 |
| 보면서 오른쪽에서는 이메일을 작성할 |
| 수 있습니다. 사용자 환경은 기기에 따라 |
| 달라집니다. |
| </p> |
| |
| <ul> |
| <li>Android N에서 실행되는 핸드헬드 기기는 화면 분할 |
| 모드를 제공합니다. 이 모드에서 시스템은 화면을 두 개의 앱으로 채우고, 이 |
| 앱을 나란히 또는 상하로 표시합니다. 사용자가 두 앱을 구분하는 분할선을 드래그하여 한 앱을 다른 앱보다 |
| 더 크게 만들 수 있습니다. |
| </li> |
| |
| <li>Android N을 실행하는 Nexus Player에서, 앱이 |
| <a href="picture-in-picture.html">PIP 모드</a>로 배치될 수 있으므로, 사용자가 검색을 |
| 수행하거나 다른 앱과 상호작용하는 중에도 앱이 계속해서 콘텐츠를 |
| 표시할 수 있습니다. |
| </li> |
| |
| <li>더 큰 기기를 제조하는 업체는 자유형식 |
| 모드를 선택할 수 있으며, 이 경우 사용자가 각 액티비티의 크기를 자유롭게 조정할 수 있습니다. 제조업체가 이 기능을 활성화하면, 기기는 화면 분할 모드 뿐만 |
| 아니라 자유형식 모드를 |
| 제공합니다. |
| </li> |
| </ul> |
| |
| <img src="{@docRoot}preview/images/mw-splitscreen.png" alt="" width="650" srcset="{@docRoot}preview/images/mw-splitscreen.png 1x, |
| {@docRoot}preview/images/mw-splitscreen_2x.png 2x," id="img-split-screen" /> |
| <p class="img-caption"> |
| <strong>그림 1.</strong> 화면 분할 모드에서 나란히 실행 중인 두 앱. |
| </p> |
| |
| <p> |
| 사용자가 다음과 같이 다중 창 모드로 전환할 수 있습니다. |
| </p> |
| |
| <ul> |
| <li>사용자가 <a href="{@docRoot}guide/components/recents.html">Overview |
| 화면</a>을 열고 액티비티 제목을 길게 누르면, |
| 이 액티비티를 화면의 강조 표시된 부분으로 드래그하여 |
| 다중 창 모드에 둘 수 있습니다. |
| </li> |
| |
| <li>사용자가 Overview 버튼을 길게 누르면, 기기가 현재 액티비티를 |
| 다중 창 모드에 두고 Overview 화면을 열며, 이 화면에서 사용자는 화면을 |
| 공유하기 위한 또 다른 액티비티를 선택할 수 있습니다. |
| </li> |
| </ul> |
| |
| <p> |
| 사용자는 여러 액티비티가 화면을 공유하는 동안 한 액티비티에서 |
| 또 다른 액티비티로 데이터를 <a href="{@docRoot}guide/topics/ui/drag-drop.html">드래그 앤 드롭</a>할 |
| 수 있습니다. (이전에는, 사용자가 단일 액티비티 내에서만 |
| 데이터를 드래그 앤 드롭할 수 있었습니다.) |
| </p> |
| |
| <h2 id="lifecycle">다중 창 수명 주기</h2> |
| |
| <p> |
| 다중 창 모드는 <a href="{@docRoot}training/basics/activity-lifecycle/index.html">액티비티 |
| 수명 주기</a>를 변경하지 않습니다. |
| </p> |
| |
| <p> |
| 다중 창 모드에서는, 사용자가 가장 최근에 상호작용했던 액티비티만 |
| 지정된 시간에 활성화됩니다. 이 액티비티는 <em>최상위</em>로 간주됩니다. |
| 다른 모든 액티비티는 표시되어 있더라도 일시 정지된 상태입니다. |
| 그러나 시스템은 이러한 일시 정지되었지만 표시된 액티비티에게 표시되지 |
| 않은 액티비티보다 더 높은 우선 순위를 부여합니다. 사용자가 일시 정지된 액티비티 중 하나와 상호작용하면, 해당 |
| 액티비티가 재개되고 이전의 최상위 액티비티가 일시 |
| 정지됩니다. |
| </p> |
| |
| <p class="note"> |
| <strong>참고:</strong> 다중 창 모드에서는 앱이 일시 정지된 상태에서도 여전히 |
| 사용자에게 표시될 수 있습니다. 앱이 일시 정지된 동안에도 액티비티를 |
| 계속해야 하는 경우도 있습니다. 예를 들어, 일시 정지 모드이지만 표시된 |
| 동영상 재생 앱은 계속해서 동영상을 보여줘야 합니다. 이러한 이유로, 동영상을 |
| 재생하는 액티비티는 {@link android.app.Activity#onPause onPause()} 핸들러에서 |
| 동영상을 일시 정지하지 <em>않는</em> 것이 좋습니다. |
| 그 대신, {@link android.app.Activity#onStop |
| onStop()}에서 동영상을 일시 정지하고, {@link android.app.Activity#onStart |
| onStart()}에서 재생을 재개해야 합니다. |
| </p> |
| |
| <p> |
| 사용자가 앱을 다중 창 모드에 놓으면 |
| 시스템은, <a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 처리</a>에 지정된 대로, 구성 변경을 액티비티에 |
| 알려줍니다. 이 동작은 사용자가 앱의 크기를 조정하거나 앱을 |
| 전체 화면 모드로 다시 전환할 때도 발생합니다. |
| 기본적으로, 이 변경에서 액티비티-수명 주기 관계는 기기 모드가 |
| 세로 모드에서 가로 모드로 전환되었음을 |
| 시스템이 앱에 알려줄 때와 동일합니다(단순 스왑 대신 |
| 기기 치수가 변경되는 경우는 제외). <a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경 처리</a>에서 설명한 |
| 대로, 액티비티 스스로 구성 변경을 처리하거나, 시스템이 액티비티를 소멸시키고 |
| 새 치수로 다시 액티비티를 생성하도록 할 수 |
| 있습니다. |
| </p> |
| |
| <p> |
| 사용자가 창의 크기를 조정하여 한쪽 치수를 더 크게 만드는 |
| 경우, 시스템은 사용자 작업에 맞게 액티비티의 크기를 조정하고 필요한 |
| 경우 <a href="{@docRoot}guide/topics/resources/runtime-changes.html">런타임 변경</a>을 수행합니다. 앱이 새로 노출되는 영역에 그릴 때 지연이 발생하는 경우, 시스템은 {@link |
| android.R.attr#windowBackground windowBackground} 속성 또는 기본 |
| <code>windowBackgroundFallback</code> 스타일 속성에 의해 |
| 지정된 색으로 이 영역을 임시로 채웁니다. |
| </p> |
| |
| <h2 id="configuring">앱을 다중 창 모드로 구성</h2> |
| |
| <p> |
| 앱이 Android N을 대상으로 하는 경우, 앱의 액티비티가 다중 |
| 창 표시를 지원하는지 여부와 지원 방법을 구성할 수 있습니다. 매니페스트에서 속성을 설정하여 크기와 레이아웃을 제어할 |
| 수 있습니다. |
| 루트 액티비티의 속성 설정은 작업 스택 내의 모든 |
| 액티비티에 적용됩니다. 예를 들어, 루트 액티비티의 |
| <code>android:resizeableActivity</code>가 true로 설정된 경우, 작업 스택에 있는 모든 액티비티의 |
| 크기를 조정할 수 있습니다. |
| </p> |
| |
| <p class="note"> |
| <strong>참고:</strong> Android N보다 더 낮은 버전의 SDK로 다중 방향 앱을 빌드하는 경우 |
| 사용자가 앱을 다중 창 모드에서 사용하면, 시스템이 |
| 이 앱의 크기를 강제로 조정합니다. 앱이 예상치 못하게 동작할 수 있음을 사용자에게 경고하는 |
| 대화 상자가 표시됩니다. 시스템은 고정 |
| 방향 앱의 크기는 조정하지 <em>않습니다</em>. 사용자가 |
| 다중 창 모드 하에서 고정 방향 앱을 열려고 시도하면, |
| 앱이 전체 화면을 차지합니다. |
| </p> |
| |
| <h4 id="resizeableActivity">android:resizeableActivity</h4> |
| <p> |
| 매니페스트의 <code><activity></code> 또는 |
| <code><application></code> 노드에서 이 속성을 설정하여 다중 창 |
| 표시를 활성화하거나 비활성화합니다. |
| </p> |
| |
| <pre> |
| android:resizeableActivity=["true" | "false"] |
| </pre> |
| |
| <p> |
| 이 속성을 true로 설정하면, 액티비티를 분할 화면 모드와 자유형식 |
| 모드로 시작할 수 있습니다. 이 속성을 false로 설정하면, 액티비티가 다중 창 모드를 지원하지 |
| 않습니다. 이 값이 false이고 사용자가 |
| 다중 창 모드에서 액티비티를 시작하려고 시도하면, 액티비티가 전체 화면을 |
| 차지합니다. |
| </p> |
| |
| <p> |
| 앱이 Android N을 대상으로 하지만 이 속성에 값을 지정하지 |
| 않은 경우, 이 속성의 기본값은 true가 됩니다. |
| </p> |
| |
| <h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4> |
| |
| <p> |
| 이 속성을 매니페스트의 <code><activity></code> 노드에 설정하여 |
| 액티비티가 PIP 표시를 지원하는지 여부를 나타냅니다. <code>android:resizeableActivity</code>가 false인 경우 이 속성이 |
| 무시됩니다. |
| </p> |
| |
| <pre> |
| android:supportsPictureInPicture=["true" | "false"] |
| </pre> |
| |
| <h3 id="layout">레이아웃 속성</h3> |
| |
| <p> |
| Android N에서 <code><layout></code> 매니페스트 요소는 |
| 다중 창 모드에서 액티비티가 동작하는 방식에 영향을 미치는 |
| 여러 속성을 지원합니다. |
| </p> |
| |
| <dl> |
| <dt> |
| <code>android:defaultWidth</code> |
| </dt> |
| |
| <dd> |
| 자유형식 모드에서 시작될 때 액티비티의 기본 너비. |
| </dd> |
| |
| <dt> |
| <code>android:defaultHeight</code> |
| </dt> |
| |
| <dd> |
| 자유형식 모드에서 시작될 때 액티비티의 기본 높이. |
| </dd> |
| |
| <dt> |
| <code>android:gravity</code> |
| </dt> |
| |
| <dd> |
| 자유형식 모드에서 시작될 때 액티비티의 초기 배치. 적당한 값은 |
| {@link android.view.Gravity} 참조를 확인하세요. |
| </dd> |
| |
| <dt> |
| <code>android:minimalHeight</code>, <code>android:minimalWidth</code> |
| </dt> |
| |
| <dd> |
| 화면 분할 |
| 및 자유형식 모드에서 액티비티의 최소 높이 및 최소 너비. 사용자가 화면 분할 모드에서 디바이더를 이동하여 액티비티를 |
| 지정된 최소값보다 더 작게 만드는 경우, 시스템은 |
| 이 액티비티를 사용자가 요청한 크기로 자릅니다. |
| </dd> |
| </dl> |
| |
| <p> |
| 예를 들어, 다음 코드는 액티비티가 자유형식 모드로 표시될 |
| 때 이 액티비티의 기본 크기와 위치 및 최소 크기를 |
| 지정하는 방법을 보여줍니다. |
| </p> |
| |
| <pre> |
| <activity android:name=".MyActivity"> |
| <layout android:defaultHeight="500dp" |
| android:defaultWidth="600dp" |
| android:gravity="top|end" |
| android:minimalHeight="450dp" |
| android:minimalWidth="300dp" /> |
| </activity> |
| </pre> |
| |
| <h2 id="running">앱을 다중 창 모드에서 실행</h2> |
| |
| <p> |
| Android N에서는 다중 창 모드에서 실행 가능한 앱을 지원하는 새로운 |
| 기능을 제공합니다. |
| </p> |
| |
| <h3 id="disabled-features">다중 창 모드에서 비활성화되는 기능</h3> |
| |
| <p> |
| 기기가 다중 창 모드에 있는 경우 일부 기능이 비활성화되거나 |
| 무시되는데, 그 이유는 이들 기능은 기기 화면을 다른 액티비티 |
| 또는 앱과 공유하는 액티비티에는 적합하지 않기 때문입니다. 이러한 기능에는 다음이 포함됩니다. |
| |
| <ul> |
| <li>일부 <a href="{@docRoot}training/system-ui/index.html">시스템 UI</a> |
| 사용자 지정 옵션이 비활성화됩니다. 예를 들어, 앱이 전체 화면 모드에서 실행되지 |
| 않을 경우에는 상태 표시줄을 숨길 수 없습니다. |
| </li> |
| |
| <li>시스템이 <code><a href= |
| "{@docRoot}guide/topics/manifest/activity-element.html#screen" |
| >android:screenOrientation</a></code> 속성의 변경을 무시합니다. |
| </li> |
| </ul> |
| |
| <h3 id="change-notification">다중 창 변경 알림 및 쿼리</h3> |
| |
| <p> |
| 다중 창 표시를 지원하기 위해 다음과 같은 새 메서드가 {@link android.app.Activity} |
| 클래스에 추가되었습니다. 각 메서드에 대한 자세한 내용은 |
| <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview SDK |
| 참조</a>를 확인하세요. |
| </p> |
| |
| <dl> |
| <dt> |
| <code>Activity.isInMultiWindowMode()</code> |
| </dt> |
| |
| <dd> |
| 액티비티가 다중 창 모드에 있는지를 알아내려면 이 메서드를 호출하세요. |
| </dd> |
| |
| <dt> |
| <code>Activity.isInPictureInPictureMode()</code> |
| </dt> |
| |
| <dd> |
| 액티비티가 PIP 모드에 있는지를 알아내려면 이 메서드를 호출하세요. |
| |
| <p class="note"> |
| <strong>참고:</strong> PIP 모드는 다중 창 모드의 특별한 |
| 케이스입니다. <code>myActivity.isInPictureInPictureMode()</code>가 |
| true를 반환하면 <code>myActivity.isInMultiWindowMode()</code>도 |
| 역시 true를 반환합니다. |
| </p> |
| </dd> |
| |
| <dt> |
| <code>Activity.onMultiWindowModeChanged()</code> |
| </dt> |
| |
| <dd> |
| 시스템은 액티비티가 다중 창 모드로 들어가거나 |
| 이 모드에서 나올 때마다 이 메서드를 호출합니다. 시스템은 액티비티가 다중 창 모드로 |
| 들어갈 때는 true 값을 메서드에 전달하고, 액티비티가 다중 창 모드에서 |
| 나올 때는 false 값을 전달합니다. |
| </dd> |
| |
| <dt> |
| <code>Activity.onPictureInPictureModeChanged()</code> |
| </dt> |
| |
| <dd> |
| 시스템은 액티비티가 PIP 모드로 들어가거나 |
| 이 모드에서 나올 때마다 이 메서드를 호출합니다. 시스템은 액티비티가 PIP 모드로 들어갈 때는 |
| true 값을 메서드에 전달하고, 액티비티가 PIP에서 나올 때는 |
| false 값을 전달합니다. |
| </dd> |
| </dl> |
| |
| <p> |
| 또한 이들 각 메서드의 {@link android.app.Fragment} 버전이 |
| 있습니다(예: <code>Fragment.isInMultiWindowMode()</code>). |
| </p> |
| |
| <h3 id="entering-pip">PIP 모드로 들어가기</h3> |
| |
| <p> |
| 액티비티를 PIP 모드에 두려면, 새로운 메서드인 |
| <code>Activity.enterPictureInPictureMode()</code>를 호출합니다. 기기가 PIP 모드를 지원하지 않으면 이 메서드는 |
| 영향이 없습니다. 자세한 내용은 |
| <a href="picture-in-picture.html">PIP</a> 문서를 참조하세요. |
| </p> |
| |
| <h3 id="launch">다중 창 모드에서 새 액티비티 시작</h3> |
| |
| <p> |
| 새 액티비티를 시작하는 경우, 가능하면 이 새 액티비티가 현재 |
| 액티비티에 인접하여 표시되어야 함을 시스템에게 알려줄 수 있습니다. 이를 위해 |
| , 플래그 |
| <code>Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT</code>를 사용합니다. 이 플래그를 전달하면 |
| 다음과 같은 동작이 요청됩니다. |
| </p> |
| |
| <ul> |
| <li>기기가 화면 분할 모드에 있는 경우, |
| 시스템은 시작한 액티비티 옆에 새 액티비티를 만들려고 시도하므로, 두 액티비티가 |
| 화면을 공유합니다. 시스템이 이 작업을 수행할 수 있다고 |
| 보장되지는 않지만, 가능하면 액티비티를 인접하게 만듭니다. |
| </li> |
| |
| <li>기기가 화면 분할 모드에 있으면, 이 플래그가 영향을 미치지 않습니다. |
| </li> |
| </ul> |
| |
| <p> |
| 기기가 자유형식 모드에 있고 새 액티비티를 시작 중인 경우, |
| <code>ActivityOptions.setLaunchBounds()</code>를 호출하여 이 새 액티비티의 치수와 화면 위치를 |
| 지정할 수 있습니다. 기기가 다중 창 모드에 있지 않으면, 이 메서드가 영향을 |
| 미치지 않습니다. |
| </p> |
| |
| <p class="note"> |
| <strong>참고:</strong> 작업 스택 내에서 액티비티를 시작하는 경우, |
| 이 액티비티는 화면상의 액티비티를 대체하여, 모든 다중 창 속성을 |
| 상속합니다. 새 액티비티를 다중 창 모드에서 별도 창으로 시작하려면, |
| 새 작업 스택에서 액티비티를 시작해야 합니다. |
| </p> |
| |
| <h3 id="dnd">드래그 앤 드롭 지원</h3> |
| |
| <p> |
| 사용자는 두 |
| 액티비티가 화면을 공유하는 동안 한 액티비티에서 다른 액티비티로 데이터를 <a href="{@docRoot}guide/topics/ui/drag-drop.html">드래그 앤 드롭</a>할 |
| 수 있습니다. (이전에는, 사용자가 단일 액티비티 내에서만 데이터를 드래그 앤 드롭할 |
| 수 있었습니다.) 이러한 이유로, 앱이 현재 지원하지 않는 경우에는 드래그 앤 드롭 |
| 기능을 앱에 추가하는 것이 좋습니다. |
| </p> |
| |
| <p> |
| N Preview SDK는 앱 간의 드래그 앤 드롭을 지원하기 위해 <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a> |
| 패키지를 확장합니다. 다음과 같은 클래스와 메서드에 대한 자세한 |
| 내용은, <a href="{@docRoot}preview/setup-sdk.html#docs-dl">N Preview |
| SDK 참조</a>를 참조하세요. |
| </p> |
| |
| <dl> |
| <dt> |
| <code>android.view.DropPermissions</code> |
| </dt> |
| |
| <dd> |
| 놓기를 수신하는 앱에 부여되는 권한을 지정하기 |
| 위한 토큰 객체. |
| </dd> |
| |
| <dt> |
| <code>View.startDragAndDrop()</code> |
| </dt> |
| |
| <dd> |
| {@link android.view.View#startDrag View.startDrag()}의 새 별칭. 액티비티 간의 드래그 앤 드롭을 활성화하려면, 새 플래그 |
| <code>View.DRAG_FLAG_GLOBAL</code>을 |
| 전달합니다. 수신자 액티비티에게 URI 권한을 |
| 부여해야 하는 경우, 새 플래그 |
| <code>View.DRAG_FLAG_GLOBAL_URI_READ</code> 또는 |
| <code>View.DRAG_FLAG_GLOBAL_URI_WRITE</code>를 적절하게 전달합니다. |
| </dd> |
| |
| <dt> |
| <code>View.cancelDragAndDrop()</code> |
| </dt> |
| |
| <dd> |
| 현재 진행 중인 드래그 작업을 취소합니다. 드래그 작업을 발생시킨 |
| 앱에 의해서만 호출될 수 있습니다. |
| </dd> |
| |
| <dt> |
| <code>View.updateDragShadow()</code> |
| </dt> |
| |
| <dd> |
| 현재 진행 중인 드래그 작업의 드래그 그림자를 대체합니다. 드래그 작업을 발생시킨 |
| 앱에 의해서만 호출될 수 있습니다. |
| </dd> |
| |
| <dt> |
| <code>Activity.requestDropPermissions()</code> |
| </dt> |
| |
| <dd> |
| {@link android.view.DragEvent}에 포함된 {@link |
| android.content.ClipData}로 전달되는 콘텐츠 URI의 권한을 요청합니다. |
| </dd> |
| </dl> |
| |
| <h2 id="testing">앱의 다중 창 지원 테스트</h2> |
| |
| <p> |
| 앱을 Android N용으로 업데이트하든 안하든 간에, |
| Android N이 실행 중인 기기에서 사용자가 앱을 다중 창 모드로 |
| 시작하려고 시도하는 경우, 앱이 다중 창 모드에서 어떻게 작동하는지 확인해야 합니다. |
| </p> |
| |
| <h3 id="configuring">테스트 기기 구성</h3> |
| |
| <p> |
| 기기에 Android N을 설치하면, 화면 분할 모드가 |
| 자동으로 지원됩니다. |
| </p> |
| |
| <h3 id="test-non-n">앱이 N Preview SDK로 작성되지 않은 경우</h3> |
| |
| <p> |
| 앱을 N Preview SDK로 빌드하지 않았는데 사용자가 |
| 앱을 다중 창 모드에서 사용하려고 시도하는 경우, 이 앱이 고정 방향을 선언하지 |
| 않으면 시스템이 앱의 크기를 강제로 조정합니다. |
| </p> |
| |
| <p> |
| 앱이 고정 방향을 선언하지 않은 경우, Android N이 |
| 실행 중인 기기에서 앱을 시작해야 하며, 앱을 화면 분할 모드에 |
| 두도록 시도해야 합니다. 앱의 크기를 강제로 조정하는 경우 사용자 환경이 |
| 적절한지 확인하세요. |
| </p> |
| |
| <p> |
| 앱이 고정 방향을 선언하는 경우, 앱을 다중 창 모드에 |
| 두도록 시도해야 합니다. 이 때 앱이 전체 화면 모드에 남아있는지 |
| 확인하세요. |
| </p> |
| |
| <h3 id="test-mw">다중 창 모드를 지원하는 경우</h3> |
| |
| <p> |
| N Preview SDK로 앱을 작성했는데 다중 창 지원을 비활성화하지 |
| 않은 경우, 화면 분할 및 자유형식 모드에서 다음과 |
| 같은 동작을 확인하세요. |
| </p> |
| |
| <ul> |
| <li>앱을 전체 화면 모드에서 시작한 다음, Overview 버튼을 길게 눌러서 |
| 다중 창 모드로 전환합니다. 앱이 적절히 전환되는지 확인합니다. |
| </li> |
| |
| <li>앱을 다중 창 모드에서 직접 시작하고, 이 앱이 적절히 |
| 시작되는지 확인합니다. 다중 창 모드에서 앱을 시작하려면, Overview 버튼을 |
| 누르고 앱의 제목 표시줄을 길게 누른 다음 화면의 강조 표시된 영역 중 |
| 하나로 제목 표시줄을 끌어서 놓습니다. |
| </li> |
| |
| <li>분할선을 끌어서 화면 분할 모드에서 앱의 크기를 조정합니다. |
| 작동 중단 없이 앱 크기가 조정되는지 확인하고, 필요한 |
| UI 요소가 표시되는지 확인합니다. |
| </li> |
| |
| <li>앱에 최소 치수를 지정한 경우, 이 치수 아래로 앱 크기를 |
| 조정해 봅니다. 지정된 최소값보다 더 작게 앱 크기를 조정할 수 |
| 없는지 확인합니다. |
| </li> |
| |
| <li>모든 테스트를 통해 앱의 성능이 적절한지 확인합니다. 예를 들어, |
| 앱 크기를 조정한 후 UI를 업데이트하기에 지연이 |
| 너무 길지 않은지 확인합니다. |
| </li> |
| </ul> |
| |
| <h4 id="test-checklist">테스트 검사 목록</h4> |
| |
| <p> |
| 다중 창 모드에서 앱의 성능을 확인하려면, 다음 |
| 작업을 시도해 보세요. 별다른 설명이 없는 한, 화면 분할 및 다중 창 모드 |
| 에서 모두 이들 작업을 시도해야 합니다. |
| </p> |
| |
| <ul> |
| <li>다중 창 모드에 들어갔다 나갑니다. |
| </li> |
| |
| <li>자신의 앱에서 다른 앱으로 전환하고, 앱이 표시는 되지만 |
| 활성화되지 않은 동안에 적절히 동작하는지 확인합니다. 예를 들어, 앱이 동영상을 재생 중인 경우, 사용자가 |
| 다른 앱과 상호작용하는 동안에 이 동영상이 계속 재생되는지 |
| 확인합니다. |
| </li> |
| |
| <li>화면 분할 모드에서, 분할선을 이동하여 앱을 더 크거나 |
| 작게 만들어 봅니다. 앱을 나란히 또는 상하로 놓은 구성에서 이러한 |
| 작업을 시도해 봅니다. 앱의 작동이 중단되지 않는지, 필수 기능이 |
| 표시되는지, 그리고 크기 조정 작업이 너무 오래 걸리지 않는지 |
| 확인합니다. |
| </li> |
| |
| <li>빠르게 연속해서 여러 가지 크기 조정 작업을 수행합니다. 앱의 작동이 중단되거나 메모리가 누수되지 |
| 않는지 확인합니다. 앱의 메모리 사용량을 확인하는 |
| 방법에 대해서는 <a href="{@docRoot}tools/debugging/debugging-memory.html">RAM 사용량 |
| 검사</a>를 참조하세요. |
| </li> |
| |
| <li>여러 가지 다른 창 구성에서 앱을 정상적으로 |
| 사용하고, 이 앱이 제대로 작동하는지 확인합니다. 텍스트를 읽을 수 있는지 확인하고, 해당 |
| UI 요소가 상호작용하기에 너무 작지 않은지 확인합니다. |
| </li> |
| </ul> |
| |
| <h3 id="test-disabled-mw">다중 창 지원을 비활성화한 경우</h3> |
| |
| <p> |
| <code>android:resizableActivity="false"</code>를 설정하여 |
| 다중 창 지원을 비활성화한 경우, Android N을 실행 중인 기기에서 |
| 앱을 시작해야 하며, 앱을 자유형식 및 화면 |
| 분할 모드로 둬야 합니다. 이 때 앱이 전체 화면 모드에 남아있는지 |
| 확인하세요. |
| </p> |