最近的畫面

「近期」畫面 (也稱為「總覽」畫面)、近期工作 清單或最近使用的應用程式畫面是系統層級的 UI,會列出最近存取過的內容 活動工作。 使用者可以瀏覽清單,選取所需工作 繼續或將工作滑開,即可從清單中移除工作。

「近期存取」畫面使用以文件為主軸 模型:Android 5.0 (API) 推出 第 21 級),該級別中的多個執行個體 含有不同文件的同一個活動,在 最近的畫面。舉例來說,Google 雲端硬碟會為 有多份 Google 文件每份文件都會在「近期存取」中顯示為一項工作 螢幕:

「近期存取」畫面顯示兩個 Google 雲端硬碟 文件,每個文件分別代表獨立的工作。

另一個常見的例子是在使用者用瀏覽器時 分享 >Gmail:系統隨即會顯示 Gmail 應用程式的「撰寫」畫面。輕觸 此時「最近使用」按鈕顯示 Chrome 和 Gmail 目前以個別方式執行 工作:

「最近使用」畫面顯示 Chrome 和 Gmail 可做為獨立工作執行

一般而言,您可以讓系統定義工作和活動的方式 顯示在「最近使用」畫面中。您不需要修改這個程式碼 行為不過,您的應用程式可以判斷活動在 最近的畫面。

ActivityManager.AppTask敬上 類別可讓您管理工作,以及 Intent 類別可讓您指定 系統會在「最近使用」畫面中新增或移除活動。此外, <activity> 屬性可讓您 資訊清單中的行為

將工作新增至「最近使用」畫面

使用 Intent 類別的旗標執行以下操作: 新增工作 可讓您進一步控管文件的開啟時機和方式 在「最近使用」畫面中重新開啟。當您使用 <activity> 屬性,則可讓您 您可以選擇一律在新工作中開啟文件,也可以重複使用現有工作 為文件定義工作

使用意圖旗標新增工作

為活動建立新文件時,您會呼叫 startActivity()敬上 方法並傳遞至啟動活動的意圖。如何插入邏輯 中斷,讓系統將活動視為「Recents」中的新任務 畫面,請傳遞 FLAG_ACTIVITY_NEW_DOCUMENT敬上 addFlags() 的旗標 Intent 方法,後者會啟動 活動。

如果將 FLAG_ACTIVITY_MULTIPLE_TASK 旗標,每次建立新文件時,系統一律會建立新工作,並使用 把目標活動當做根層級。這項設定可允許 同時開啟多項工作下列程式碼示範了 活動會執行以下動作:

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++)
        }

Java

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()。 新活動會取得意圖,並在 Recents 上建立新文件 ,如以下範例所示:

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)
}

Java

@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
這個活動會在文件中重複使用現有的工作。這就等同於