概览屏幕(最新动态屏幕、最近任务列表)
好吧,這一篇基本上就是Android官方文檔抄過來了……文檔寫的很清楚簡潔,似乎不會精簡什么了………
概覽屏幕是一個系統級別的UI,其中列出了最近訪問過的Activity和任務,用戶可以瀏覽該列表并選擇要恢復的任務,也可以通過滑動清除任務將其從列表中移除。通常應該允許系統定義任務和Activity在概覽屏幕中顯示方法,且無需修改,應用可以確定Activity在概覽屏幕中顯示方式和時間,可以使用ActivityManager.AppTask類來管理任務,使用Intent類的Activity標志來指定某Activity添加到概覽屏幕或從中移除的時間,此外,可以使用<activity>屬性在清單文件中設置該行為。
將任務添加到概覽屏幕:
?使用Intent標志添加任務:
為 Activity 創建新文檔時,可調用?ActivityManager.AppTask?類的?startActivity()?方法,以向其傳遞啟動 Activity 的 Intent。 要插入邏輯換行符以便系統將 Activity 視為新任務顯示在概覽屏幕中,可在啟動 Activity 的?Intent的?addFlags()?方法中傳遞?FLAG_ACTIVITY_NEW_DOCUMENT?標志。
如果在創建新文檔時設置?FLAG_ACTIVITY_MULTIPLE_TASK?標志,則系統始終會以目標 Activity 作為根創建新任務。此設置允許同一文檔在多個任務中打開。以下代碼演示了主 Activity 如何執行此操作:
當主 Activity 啟動新 Activity 時,系統會搜遍現有任務,看看是否有任務的 Intent 與 Activity 的 Intent 組件名稱和 Intent 數據相匹配。 如果未找到任務或者 Intent 包含?FLAG_ACTIVITY_MULTIPLE_TASK?標志,則會以該 Activity 作為其根創建新任務。如果找到的話,則會將該任務轉到前臺并將新 Intent 傳遞給?onNewIntent()。新 Activity 將獲得 Intent 并在概覽屏幕中創建新文檔,如下例所示:
@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_new_document);mDocumentCount = getIntent().getIntExtra(DocumentCentricActivity.KEY_EXTRA_NEW_DOCUMENT_COUNTER, 0);mDocumentCounterTextView = (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 activityis reused to create a new document.*/setDocumentCounterText(R.string.reusing_document_counter); } 使 使用Activity屬性添加任務:
此外,Activity 還可以在其清單文件中指定始終通過使用?<activity>?屬性?android:documentLaunchMode?進入新任務。 此屬性有四個值,會在用戶使用該應用打開文檔時產生以下效果:
"intoExisting"注:對于除?none?和?never?以外的值,必須使用?launchMode="standard"?定義 Activity。如果未指定此屬性,則使用?documentLaunchMode="none"。
移除任務: 在于概覽屏幕創建新任務的 Activity 中,您可以通過調用 finishAndRemoveTask()?方法指定何時移除該任務以及結束所有與之相關的 Activity。 public void onRemoveFromRecents(View view) {// The document is no longer needed; remove its task.finishAndRemoveTask(); } 保留已完成的任務:若要將任務保留在概覽屏幕中(即使其 Activity 已完成),可在啟動 Activity 的 Intent 的?addFlags()?方法中傳遞?FLAG_ACTIVITY_RETAIN_IN_RECENTS?標志。
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, incrementAndGet());return newDocumentIntent; }要達到同樣的效果,請將? <activity> ?屬性android:autoRemoveFromRecents ?設置為? false 。文檔 Activity 的默認值為? true ,常規 Activity 的默認值為? false 。如前所述,使用此屬性替代? FLAG_ACTIVITY_RETAIN_IN_RECENTS ?標志。總結
以上是生活随笔為你收集整理的概览屏幕(最新动态屏幕、最近任务列表)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Activity中的任务和返回站
- 下一篇: Activity本质和内部实现机制