standard 範例html
public class A extend Activity { // A 的 launchMode 為 standard // 可 startActivity(A) 與 startActivity(B) } public class B extend Activity { // B 的 launchMode 為 standard // 可 startActivity(A) 與 startActivity(B) } // A 為 LAUNCHER 並開始 B,目前 Activity Queue 中有 A、B // 再由 B 再開啟 B,再開啟 B,再開啟 A,目前 Activity Queue 中有 A、B、B、B、A
singleTop 範例 java
public class A extend Activity { // A 的 launchMode 為 standard // 可 startActivity(A) 與 startActivity(B) } public class B extend Activity { // B 的 launchMode 為 singleTop // 可 startActivity(A) 與 startActivity(B) } // A 為 LAUNCHER 並開始 B,目前 Activity Queue 中有 A、B // 再由 B 再開啟 B,再開啟 B,再開啟 A,目前 Activity Queue 中有 A、B、A // 因為 B 為 TopActivity 因此由 B 再開啟的 B 不會再產生新的實體
singleTask 範例android
public class A extend Activity { // A 的 launchMode 為 standard // 可 startActivity(A) 與 startActivity(B) } public class B extend Activity { // B 的 launchMode 為 singleTask // 可 startActivity(A) 與 startActivity(B) } // A 為 LAUNCHER 並開始 A,目前 Activity Queue 中有 A、A 且兩者的 Task ID 相同 // 再由 A 再開啟 B,再開啟 B,再開啟 A,目前 Activity Queue 中有 A、A、B、A,且 getTaskId() 皆相同 // 因為 B 為 singleTask 因此在 Task 中是惟一的,這時若再由最後一個 A 開啟 B // Activity Queue 會變成 A、A、B 即回到剛才已存在的 B // 若在 B 按下 Back 即理所當然的變成 A、A
singleInstance 範例ide
public class A extend Activity { // A 的 launchMode 為 standard // 可 startActivity(A) 與 startActivity(B) } public class B extend Activity { // B 的 launchMode 為 singleInstance // 可 startActivity(A) 與 startActivity(B) } // A 為 LAUNCHER 並開始 A,目前 Activity Queue 中有 A、A 且兩者的 Task ID 相同 // 再由 A 再開啟 B,此時 Activity Queue 中有 A、A、B,且 A 與 B 的 getTaskId() 不會相同 // 因為 B 為 singleInstance 因此會產生一個新的 Task 且在本身的 Task 中是惟一的 // 這時若再由最後一個 B 開啟 A 即會變成 A、A、B、A,全部的 A 是同一個 Task ID // 若此時再由 A 開啟 B 即會變成 A、A、B,且 Task ID 不相同 // 這時若在不一樣 Task ID 的 B 中按了 Back 鍵,Queue 會變成本來主 Task 的 A、A、A // 因此使用 SingleInstance 時要特別當心