1. 程式人生 > >Activity之任務和返回棧

Activity之任務和返回棧

   一個應用程式中會有多個activity,每個activity一般都有自己獨立的功能。我們可以用activity啟動自己應用中的另一個activity。例如:從一個數據列表介面,跳轉到一個數據詳情介面。也可以用我們的activity去開啟其他應用的activity,比如要傳送一封郵件。就是使用intent去跳轉到郵箱應用的activity中,郵件傳送完成之後,點選返回就可返回。

即使有很多activity分別來自不同的應用程式的,Android系統任然可以將它們無縫的結合在一起,之所以能實現這一點,就是因為這些Activity都是存在於一個相同的任務(Task)當中的。

任務是一個activity的集合,它使用棧的方式來管理其中的activity,這個棧又被稱為返回棧(back stack),棧中activity的順序就是按照它們開啟的順序依次存放的。

手機的home介面是大多數任務的開始的地方,當用戶在手機桌面點選一個應用的圖示時,這個應用的任務就會被轉移到前臺。如果目前這個應用並沒有任何一個任務的話(說明這個應用最近沒有被啟動過),系統就會建立一個新的任務,並且將該應用的主activity放入到返回棧當中。

一個應用的後臺任務(task)可能有多個(和啟動模式有關)。但是在多工鍵中表現出來的一個應用只有一個後臺棧。

當一個activity啟動另一個activity的時候,新的Activity就會被放置到返回棧的棧頂並獲取焦點。前一個Activity仍然保留在返回棧當中並處於停止狀態。當用戶按下返回鍵的時候,棧中最頂端的Activity會被移除,然後前一個Activity重新回到最頂端的位置。棧中的Activity的順序永遠不會發生改變,我們只能向棧頂新增Activity,或者將棧頂的Activity移除掉。因此,返回棧是一個典型的後進後出的(last in,first out)的資料結構。
圖例Activity在棧中的執行變化:
這裡寫圖片描述

如果使用者一直按Back鍵,這樣返回棧中的Activity會被一個一個的移除,直到最終返回到主螢幕。當返回棧中的所有的Activity都被移除的時候,對應的任務就不存在了。

任務除了可以被移除到前臺之外,當然也是可以被轉移到後臺,當用戶啟動一個新任務,或者點選home鍵回到主遮蔽的時候,之前的任務棧就會被轉移到後臺了。當任務處於後臺狀態時,返回棧中的所有Activity都會進入停止狀態,但這些Activity在棧中的順序都會原封不動的保留著:如下圖
這裡寫圖片描述

這個時候,使用者還可以將任意後臺的任務切換到前臺,這樣使用者應該就會看到之前離開的這個任務時處於最頂端的那個Activity. 舉個例子來說,當前任務A的棧中有三個Activity,現在使用者按下Home鍵,然後點選桌面圖示又啟動另外一個應用程式。當系統回到桌面的時候,任務A已經進入後臺,然後其他另一個應用程式時,系統會為這個程式開啟一個新的任務(任務B)。當用戶使用完這個程式之後,再次按Home鍵回到桌面,這個時候任務B也進入了後臺。然後使用者又重新打開了第一次使用的程式,這個時候任務A又回到前臺,A任務棧中的三個Activity任然保留著剛才的順序 ,最頂端的Activity將重新變為執行狀態。

圖示Android多工切換的例項:
這裡寫圖片描述

相關推薦

Activity任務返回

   一個應用程式中會有多個activity,每個activity一般都有自己獨立的功能。我們可以用activity啟動自己應用中的另一個activity。例如:從一個數據列表介面,跳轉到一個數據詳情介面。也可以用我們的activity去開啟其他應用的activ

Android總結 - Activity任務返回、儲存Activity的狀態

任務和返回棧   一個應用程式當中通常都會包含很多個Activity,每個Activity都應該設計成為一個具有特定的功能,並且可以讓使用者進行操作的元件。另外,Activity之間還應該是可以相互啟動的。比如,一個郵件應用中可能會包含一個用於展示郵件列表的Activity,而當用戶點選了其中某

Activity任務返回、儲存Activity的狀態

任務和返回棧   一個應用程式當中通常都會包含很多個Activity,每個Activity都應該設計成為一個具有特定的功能,並且可以讓使用者進行操作的元件。另外,Activity之間還應該是可以相互啟動的。比如,一個郵件應用中可能會包含一個用於展示郵件列表的Activity

Android任務返回完全解析,細數那些你所不知道的細節

本篇文章主要內容來自於Android Doc,我翻譯之後又做了些加工,英文好的朋友也可以直接去讀原文。任務和返回棧一個應用程式當中通常都會包含很多個Activity,每個Activity都應該設計成為一個具有特定的功能,並且可以讓使用者進行操作的元件。另外,Activity之

Tasks and Back Stack(任務返回)

以下是講解activity的任務和返回棧,從android開發文件中翻譯而來。 一個app通常都包含多個activities,每個activity 的設計都是基於使用者可以執行特定行為,使用者也可以開啟其他activities。比如一個email app

Android 任務返回

任務和返回棧 一個應用程式當中通常都會包含很多個Activity,每個Activity都應該設計成為一個具有特定的功能,並且可以讓使用者進行操作的元件。另外,Activity之間還應該是可以相互啟動的。比如,一個郵件應用中可能會包含一個用於展示郵件列表的Activity

Android任務返回簡單總結

       任務是指在執行特定作業時與使用者互動的一系列 Activity。 這些 Activity 按照各自的開啟順序排列在堆疊(即返回棧)中。一般情況下我們可以認為一個應用就是一個任務,並且這個應用啟動的所有Activity會按照開啟的順序放入堆疊中

面試二:Android任務返回

本篇文章主要內容來自於Android Doc,我翻譯之後又做了些加工,英文好的朋友也可以直接去讀原文。 任務和返回棧 一個應用程式當中通常都會包含很多個Activity,每個Activity都應該設計成為一個具有特定的功能,並且可以讓使用者進行操作的元件。另外,

安卓四大元件 Activity 任務回收(Tasks and Back Stack)

本文摘要 |---Saving Activity State   |---Managing Tasks     |---Defining launch modes     |---Handling affinities     |---Clearing the back s

的置空入,出返回頂元素操作

#include "stdio.h" #include "stdlib.h" #define N sizeof(struct stack) typedef struct stack{int data;struct stack *next; }*pstack; //置空鏈棧

順序的置空入返回頂元素

#include "stdio.h" #include "stdlib.h" #define MAXSIZE 100 #define OK 1 #define FALSE 0 //順序棧結構體 typedef struct stack{int data[MAXSIZE];i

Activity生命週期任務

一、Activity生命週期 onCreate():首次建立 Activity 時呼叫。 您應該在此方法中執行所有正常的靜態設定— 建立檢視、將資料繫結到列表等。 onRestart():在 Acti

轉: 【Java並發編程】二十一:並發新特性—阻塞隊列阻塞(含代碼)

err 退出 link rac gb2312 com void throws pbo 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/17511147 阻塞隊列 阻塞隊列是Java 5並發新特性中的內容

第二章線性表、、佇列線性表

線性表的儲存結構(主要有兩種): 1、定長的順序儲存結構,也稱順序表或向量型的一維陣列結構。資料結點之間的邏輯關係是通過資料結點的儲存位置來反映的。 2、邊長的線性結構儲存結構、大多實現為連結式儲存結構。資料結點之間的邏輯關係是以指標來表示的。 兩者的比較 1、順序表的主要優點體現在沒有使用指標,節省

第二章線性表、、隊列線性表

根據 取出 指針 插入 特殊性 邏輯 排序 存儲結構 mar 線性表的存儲結構(主要有兩種): 1、定長的順序存儲結構,也稱順序表或向量型的一維數組結構。數據結點之間的邏輯關系是通過數據結點的存儲位置來反映的。 2、邊長的線性結構存儲結構、大多實現為鏈接式存儲結構。數據結點

python 資料結構佇列

# 棧是一種特殊的線性表,僅能線上性表的一端操作,棧頂允許操作,棧底不允許操作。 # 棧的特性:後進先出 class Stack(object): """棧""" def __init__(self): self.items=[] def is_empty(s

Spring Boot Controller 接收引數返回資料總結(包括上傳、下載檔案)

        一、接收引數(postman傳送) 1.form表單 @RequestParam("name") String name 會把傳遞過來的Form表單中的name對應到formData方法的nam

淺談Activity啟動方式(5種啟動方式隱式啟動)

Activity在Android APP中的重要性不言而喻,那麼瞭解Activity的幾種不同的啟動方式對設計出好的App至關重要! 眾所周知Activity的啟動方式有如下幾種 1.在“Home”下點選圖示,啟動應用程式的首個Activity。我們稱之為主Activ

記憶體管理的區別

不知道誰寫的,很詳細,對了解程式資料儲存有一定幫助,轉載過來自己學習同時與眾分享。 一、預備知識―程式的記憶體分配 一個由C/C++編譯的程式佔用的記憶體分為以下幾個部分 1、棧區(stack)― 由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。 2、堆區

2017-12-19python全9期第四天第三節iterable可迭代物件join字串列表轉換成字串range

#!/user/bin/python# -*- coding:utf-8 -*-s = 'zd's1 = '_'.join(s)print(s1)li = ['zs','ls','ww','zl','張達']s = '+++++++'.join(li)print(s)for i in range(0,10):