Bạn có thể thấy sự khác biệt giữa hai bối cảnh khi bạn khởi chạy ứng dụng của mình trực tiếp từ màn hình chính so với khi ứng dụng của bạn được khởi chạy từ một ứng dụng khác thông qua mục đích chia sẻ.
Dưới đây là một ví dụ thực tế về "hành vi ngăn xếp ngược không chuẩn", được đề cập bởi @CommonSenseCode, có nghĩa là:
Giả sử rằng bạn có hai ứng dụng giao tiếp với nhau, App1 và App2 .
Khởi chạy App2: MainActivity từ launcher. Sau đó, từ MainActivity khởi chạy App2: juniorActivity . Ở đó, sử dụng bối cảnh hoạt động hoặc bối cảnh ứng dụng, cả hai hoạt động đều sống trong cùng một nhiệm vụ và điều này đều ổn (với điều kiện bạn sử dụng tất cả các chế độ khởi chạy tiêu chuẩn và cờ mục đích). Bạn có thể quay lại MainActivity bằng cách nhấn lại và trong các ứng dụng gần đây, bạn chỉ có một nhiệm vụ.
Giả sử bây giờ bạn đang ở trong App1 và khởi chạy App2: MainActivity với mục đích chia sẻ (ACTION_SEND hoặc ACTION_SEND_MULTIPLE). Sau đó, từ đó cố gắng khởi chạy App2: juniorActivity (luôn có tất cả các chế độ khởi chạy tiêu chuẩn và cờ mục đích). Nhũng gì xảy ra là:
nếu bạn khởi chạy App2: Thứ cấp với ngữ cảnh ứng dụng trên Android <10, bạn không thể khởi chạy tất cả các hoạt động trong cùng một tác vụ . Tôi đã thử với Android 7 và 8 và Chương trình phụ luôn được khởi chạy trong một tác vụ mới (tôi đoán là vì App2: Thứ cấp được khởi chạy với bối cảnh ứng dụng App2 nhưng bạn đến từ App1 và bạn không khởi chạy ứng dụng App2 trực tiếp Android có thể nhận ra điều đó và sử dụng FLAG_ACTIVITY_NEW_TASK). Điều này có thể tốt hoặc xấu tùy theo nhu cầu của bạn, vì ứng dụng của tôi rất tệ.
Trên Android 10, ứng dụng gặp sự cố với thông báo
"Gọi startActivity () từ bên ngoài ngữ cảnh Hoạt động yêu cầu cờ FLAG_ACTIVITY_NEW_TASK. Đây có thực sự là điều bạn muốn không?" .
Vì vậy, để làm cho nó hoạt động trên Android 10, bạn phải sử dụng FALG_ACTIVITY_NEW_TASK và bạn không thể chạy tất cả các hoạt động trong cùng một tác vụ.
Như bạn có thể thấy hành vi khác nhau giữa các phiên bản Android, kỳ lạ.
nếu bạn khởi chạy App2: JuniorActivity với bối cảnh hoạt động thì mọi thứ đều ổn và bạn có thể chạy tất cả các hoạt động trong cùng một tác vụ dẫn đến điều hướng backstack tuyến tính.
Tôi hy vọng tôi đã thêm một số thông tin hữu ích