Từ trang Cơ bản về Ứng dụng của hướng dẫn dành cho nhà phát triển Android:
Theo mặc định, tất cả các hoạt động trong một ứng dụng đều có mối quan hệ với nhau - nghĩa là, có một ưu tiên cho tất cả chúng thuộc cùng một tác vụ.
Hoạt động "singleInstance" đứng một mình là hoạt động duy nhất trong nhiệm vụ của nó. Nếu nó bắt đầu một hoạt động khác, hoạt động đó sẽ được khởi chạy vào một nhiệm vụ khác bất kể chế độ khởi chạy của nó là gì - như thể FLAG_ACTIVITY_NEW_TASK là trong mục đích. Trong tất cả các khía cạnh khác, chế độ "singleInstance" giống với "singleTask".
Như đã lưu ý ở trên, không bao giờ có nhiều hơn một phiên bản của hoạt động "singleTask" hoặc "singleInstance", vì vậy phiên bản đó dự kiến sẽ xử lý tất cả các ý định mới. Hoạt động "singleInstance" luôn ở đầu ngăn xếp (vì nó là hoạt động duy nhất trong tác vụ), vì vậy nó luôn ở vị trí để xử lý ý định. Tuy nhiên, một hoạt động "singleTask" có thể có hoặc không có các hoạt động khác phía trên nó trong ngăn xếp. Nếu có, nó không ở vị trí để xử lý ý định và ý định bị loại bỏ. (Ngay cả khi ý định bị bỏ, sự xuất hiện của nó sẽ khiến nhiệm vụ đến tiền cảnh, nơi nó sẽ vẫn còn.)
Vì không bao giờ có nhiều hơn một phiên bản Hoạt động với một trong hai chế độ khởi chạy, nút quay lại sẽ luôn đưa bạn đến phiên bản Hoạt động hiện có trong trường hợp của bạn.
Một điểm khác biệt quan trọng là "singleTask" không yêu cầu tạo một nhiệm vụ mới cho các Hoạt động mới đang được khởi chạy khi một cái gì đó được chọn. Nó cũng không phải xóa tác vụ mới đó trên nút quay lại mỗi lần.
Vì ngăn xếp Hoạt động của bạn thực hiện tất cả liên quan đến "nhiệm vụ" của một người dùng và có vẻ như bạn không có cấu trúc Intent phức tạp trong đó singleInstance có thể có lợi khi luôn xử lý chúng, tôi khuyên bạn nên sử dụng chế độ khởi chạy singleTask.
Đây là một bài đăng blog tốt để biết thêm thông tin, cũng như được ghi nhận cho hình ảnh: Chuỗi hoạt động và nhiệm vụ của Android - Giới thiệu về mô hình thành phần giao diện người dùng của Android