최근 화면

최근 화면(개요 화면이라고도 함), 최근 작업 최근 앱 목록 화면은 최근 액세스한 사용자 목록을 보여주는 시스템 수준의 UI입니다. 활동할 일. 사용자는 목록을 탐색하고, 작업을 선택하여 다시 시작하거나 목록에서 할 일을 스와이프하여 목록에서 삭제할 수 있습니다.

최근 화면은 문서 중심 모델 - Android 5.0 (API 레벨 21)을 말하며, 여기서 다른 문서가 포함된 동일한 활동이 최근 화면 예를 들어 Google Drive에 각 사용자의 여러 Google 문서를 확인할 수 있습니다 각 문서는 최근 탭에 할 일로 표시됩니다. 화면:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
두 개의 Google Drive가 표시된 최근 화면 각 문서는 별도의 작업으로 표현됩니다

또 다른 일반적인 예는 사용자가 공유 > Gmail Gmail 앱의 편지쓰기 화면이 나타납니다. 화면 왼쪽 상단의 이때 최근 버튼을 누르면 별도로 실행되는 Chrome과 Gmail이 표시됩니다. 작업:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
Chrome과 Gmail이 표시된 최근 화면 별도의 태스크로 실행할 수 있습니다

일반적으로는 시스템이 작업과 활동의 방식을 정의하도록 합니다. 표시됩니다. 이 항목은 수정할 필요가 없습니다. 있습니다. 그러나 최근 화면

ActivityManager.AppTask 드림 클래스를 통해 작업을 관리하고 Intent 클래스를 사용하면 최근 화면에서 활동이 추가되거나 삭제됨 또한 <activity> 속성을 사용하면 매니페스트의 동작을 확인하세요

최근 화면에 작업 추가

Intent 클래스의 플래그를 사용하여 할 일 추가를 사용하면 문서를 여는 시기와 방법을 더 효과적으로 제어할 수 있으며 다시 열 수 있습니다. 이 <activity> 속성에 대해 다음과 같은 작업을 수행할 수 있습니다. 항상 새 작업에서 문서를 열거나 기존 작업 태스크의 예입니다.

인텐트 플래그를 사용하여 작업 추가

활동에 대해 새 문서를 만들 때 startActivity() 드림 메서드를 호출하고 활동을 시작하는 인텐트를 이 메서드에 전달합니다. 논리 문자를 삽입하기 위해 시스템이 사용자의 활동을 최근 기록의 새 작업으로 취급하게 합니다. 화면의 오른쪽 상단에 있는 FLAG_ACTIVITY_NEW_DOCUMENT 드림 addFlags()의 플래그 API를 호출하는 Intent의 메서드에서 있습니다.

FLAG_ACTIVITY_MULTIPLE_TASK를 설정하는 경우 플래그를 지정하면 시스템은 항상 타겟 활동을 루트로 사용할 수 있습니다. 이 설정을 사용하면 동일한 문서를 2개 이상의 작업에서 열었습니다. 다음 코드는 기본 활동은 다음을 수행합니다.

Kotlin

fun createNewDocument(view: View) {
    val newDocumentIntent = newDocumentIntent()
    if (useMultipleTasks) {
        newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
    }
    startActivity(newDocumentIntent)
}

private fun newDocumentIntent(): Intent =
        Intent(this, NewDocumentActivity::class.java).apply {
            addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or
                    android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS)
            putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++)
        }

자바

public void createNewDocument(View view) {
      final Intent newDocumentIntent = newDocumentIntent();
      if (useMultipleTasks) {
          newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
      }
      startActivity(newDocumentIntent);
  }

  private Intent newDocumentIntent() {
      boolean useMultipleTasks = checkbox.isChecked();
      final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
      newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
      newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, documentCounter++);
      return newDocumentIntent;
  }

}

기본 활동이 새 활동을 실행하면 시스템은 그 인텐트가 인텐트 구성요소 이름과 일치하고 인텐트 데이터를 정의합니다. 작업을 찾을 수 없거나 FLAG_ACTIVITY_MULTIPLE_TASK 플래그를 사용하면 활동을 루트로 하여 새 작업이 생성됩니다.

시스템이 인텐트 구성 요소 이름과 일치하는 인텐트가 있는 작업을 찾은 경우 해당 작업을 프런트로 가져오고 새 인텐트를 onNewIntent() 새 활동이 인텐트를 가져오고 최근 항목에 새 문서를 만듭니다. 화면에 표시되어야 합니다.

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_new_document)
    documentCount = intent
            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0)
    documentCounterTextView = findViewById(R.id.hello_new_document_text_view)
    setDocumentCounterText(R.string.hello_new_document_counter)
}

override fun onNewIntent(newIntent: Intent) {
    super.onNewIntent(newIntent)
    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this Activity
    will be reused. */
    setDocumentCounterText(R.string.reusing_document_counter)
}

자바

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_document);
    documentCount = getIntent()
            .getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);
    documentCounterTextView = (TextView) findViewById(
            R.id.hello_new_document_text_view);
    setDocumentCounterText(R.string.hello_new_document_counter);
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    /* If FLAG_ACTIVITY_MULTIPLE_TASK has not been used, this activity
    is reused to create a new document.
     */
    setDocumentCounterText(R.string.reusing_document_counter);
}

활동 속성을 사용하여 작업 추가

또한 활동은 매니페스트에서 항상 새 작업으로 시작하도록 지정할 수 있습니다. <activity> 메서드를 사용하여 속성 android:documentLaunchMode. 이 속성에는 사용자가 애플리케이션이 포함된 문서를 엽니다.

intoExisting
활동이 문서에 기존 작업을 다시 사용합니다. 이 방법은 FLAG_ACTIVITY_NEW_DOCUMENT 드림 플래그를 설정하지 않고 FLAG_ACTIVITY_MULTIPLE_TASK 플래그의 내용을 참조하세요. 인텐트 플래그를 사용하여 작업 추가 섹션
always
문서가 다음에 있더라도 활동이 문서에 대해 새 작업을 생성합니다. 이미 열려 있습니다. 이 값을 사용하는 것은 FLAG_ACTIVITY_NEW_DOCUMENTFLAG_ACTIVITY_MULTIPLE_TASK 플래그.
none
활동이 문서의 새 작업을 생성하지 않습니다. 최근 항목 화면은 활동을 기본적으로 처리하는 것처럼 처리합니다. 하나의 작업을 표시합니다. 사용자가 마지막으로 호출한 활동부터 재개됩니다.
never
활동이 문서의 새 작업을 생성하지 않습니다. 이 값 설정하기 포드의 동작을 재정의하여 FLAG_ACTIVITY_NEW_DOCUMENTFLAG_ACTIVITY_MULTIPLE_TASK 있습니다. 둘 중 하나가 인텐트와 최근 화면에 설정되어 있는 경우 앱에 대해 단일 작업을 표시하고 앱이 어떤 활동부터 재개하든 사용자를 마지막으로 호출했습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.

할 일 목록 삭제

기본적으로 문서 작업은 최근 화면에서 자동으로 종료됩니다. 자동으로 전달됩니다. 이 동작을 재정의하려면 ActivityManager.AppTask 드림 클래스, Intent 플래그 또는 <activity> 속성

다음을 설정하여 최근 화면에서 언제든지 할 일을 완전히 제외할 수 있습니다. <activity> 속성 android:excludeFromRecents true님에게 보냅니다.

앱이 최근 화면 <activity> 속성 android:maxRecents을(를) 정수 값입니다. 최대 작업 수에 도달하면 최근 사용 화면에서 가장 오래전에 사용한 작업이 사라집니다. 기본값은 16이며 최댓값은 50입니다 (메모리가 부족한 기기에서는 25). 더 낮은 값 유효하지 않습니다.

AppTask 클래스를 사용하여 작업 삭제

최근 화면에서 새 작업을 생성하는 활동에서는 다음을 수행할 수 있습니다. 작업을 제거하는 시점을 지정하고 이와 관련된 모든 활동을 호출 finishAndRemoveTask() 드림 메서드를 사용하여 축소하도록 요청합니다.

Kotlin

fun onRemoveFromOverview(view: View) {
    // It is good pratice to remove a document from the overview stack if not needed anymore.
    finishAndRemoveTask()
}

자바

public void onRemoveFromRecents(View view) {
    // The document is no longer needed; remove its task.
    finishAndRemoveTask();
}

완료된 작업 유지

할 일을 최근 화면에 보관하려는 경우(활동이 완료되면 FLAG_ACTIVITY_RETAIN_IN_RECENTS 드림 플래그 addFlags() 메서드를 인텐트를 실행합니다.

Kotlin

private fun newDocumentIntent() =
        Intent(this, NewDocumentActivity::class.java).apply {
            addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT or
                    android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS)
            putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement())
        }

자바

private Intent newDocumentIntent() {
    final Intent newDocumentIntent = new Intent(this, NewDocumentActivity.class);
    newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
      android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);
    newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, getAndIncrement());
    return newDocumentIntent;
}

동일한 효과를 얻으려면 <activity> 속성 android:autoRemoveFromRecents false님에게 전송합니다. 기본값은 문서 활동의 경우 true, 다음의 경우 false입니다. 도움이 됩니다. 이 속성을 사용하면 FLAG_ACTIVITY_RETAIN_IN_RECENTS 플래그.

최근 URL 공유 사용 설정하기 (Pixel만 해당)

Android 12 이상을 실행하는 Pixel 기기에서 사용자는 링크를 공유할 수 있습니다. '최근' 화면에서 최근에 본 웹 콘텐츠로 바로 이동할 수 있습니다. 방문 후 사용자가 '최근 사용' 화면으로 스와이프하면 클릭한 다음 링크 버튼을 탭하여 URL입니다.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
공유 링크가 있는 최근 화면 최근에 본 웹 콘텐츠

모든 앱은 웹 UI를 제공하여 사용자가 최근 항목 연결을 사용 설정할 수 있습니다. 재정의 onProvideAssistContent()님, 다음과 같습니다.

Kotlin

class MainActivity : AppCompatActivity() {
    protected fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun onProvideAssistContent(outContent: AssistContent) {
        super.onProvideAssistContent(outContent)
        outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage"))
    }
}

Java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onProvideAssistContent(AssistContent outContent) {
        super.onProvideAssistContent(outContent);

        outContent.setWebUri(Uri.parse("https://example.com/myCurrentPage"));
    }
}