Hy vọng ai đó có thể giúp tôi tìm ra, nếu không phải là một giải pháp, ít nhất là một lời giải thích cho một hành vi.
Vấn đề:
Trên một số thiết bị, nhấn biểu tượng trình khởi chạy sẽ dẫn đến tác vụ hiện tại được tiếp tục, trên các thiết bị khác, kết quả là mục đích khởi chạy ban đầu sẽ bị hủy (khởi động lại ứng dụng một cách hiệu quả). Lý do tại sao điều này xảy ra?
Chi tiết:
Khi bạn nhấn "Biểu tượng trình khởi chạy", ứng dụng sẽ khởi động bình thường - Nghĩa là, tôi cho rằng, một Ý định được khởi chạy với tên đầu tiên của bạn Activity
với hành động android.intent.action.MAIN
và danh mục android.intent.category.LAUNCHER
. Điều này không phải luôn luôn là trường hợp tuy nhiên:
Trên phần lớn thiết bị, nếu bạn nhấn biểu tượng trình khởi chạy sau khi ứng dụng đã chạy, Hoạt động hiện đang chạy trong quy trình đó sẽ được tiếp tục ( KHÔNG phải là ban đầu Activity
). Nó tiếp tục theo cùng một cách như thể bạn đã chọn nó từ "Nhiệm vụ gần đây" trong menu Hệ điều hành. Đây là hành vi tôi muốn trên tất cả các thiết bị.
Tuy nhiên, trên các thiết bị khác được chọn hành vi khác nhau xảy ra:
Trên Motorola Xoom, khi bạn nhấn biểu tượng trình khởi chạy, Ứng dụng sẽ luôn bắt đầu khởi chạy ban đầu
Activity
bất kể những gì hiện đang chạy. Tôi giả định rằng các biểu tượng trình khởi chạy luôn bắt đầu ý định "LAUNCHER".Trên Samsung Tab 2, khi bạn nhấn biểu tượng trình khởi chạy, nếu bạn vừa cài đặt ứng dụng, nó sẽ luôn khởi chạy ban đầu
Activity
(Giống như Xoom) - tuy nhiên, sau khi bạn khởi động lại thiết bị sau khi cài đặt, biểu tượng trình khởi chạy sẽ thay thế tiếp tục ứng dụng. Tôi giả sử rằng các thiết bị này thêm "ứng dụng đã cài đặt" vào bảng tra cứu khi khởi động thiết bị cho phép các biểu tượng trình khởi chạy tiếp tục chính xác các tác vụ đang chạy?
Tôi đã đọc nhiều câu trả lời nghe có vẻ giống với vấn đề của tôi nhưng chỉ cần thêm android:alwaysRetainTaskState="true"
hoặc sử dụng launchMode="singleTop"
vào Activity
câu trả lời không phải là câu trả lời.
Biên tập:
Sau lần ra mắt gần đây nhất của ứng dụng này, chúng tôi thấy rằng hành vi này đã bắt đầu xảy ra trên tất cả các thiết bị sau lần khởi động lại đầu tiên. Điều này có vẻ điên rồ với tôi nhưng nhìn qua quá trình khởi động lại, tôi thực sự không thể tìm thấy điều gì sai.
finish()
họ trong những trường hợp bắt đầu Activity
lại từ đầu thay vì nối lại chúng.