Chính xác thì thuộc tính taskAffinity
được sử dụng để làm gì? Tôi đã xem qua tài liệu nhưng tôi không thể hiểu nhiều.
Bất cứ ai có thể giải thích mối quan hệ nhiệm vụ trong thuật ngữ laymans?
Chính xác thì thuộc tính taskAffinity
được sử dụng để làm gì? Tôi đã xem qua tài liệu nhưng tôi không thể hiểu nhiều.
Bất cứ ai có thể giải thích mối quan hệ nhiệm vụ trong thuật ngữ laymans?
Câu trả lời:
Android Task Affinity được sử dụng để làm gì?
Một ứng dụng android có các Hoạt động tạo thành một ngăn xếp giống như một bộ bài. Nếu bạn khởi động một ứng dụng Android và bắt đầu năm hoạt động A, B, C, D, E. Chúng sẽ tạo thành một ngăn xếp
E - chat view
D - weather screen
C - map view
B - weather screen
A - login screen
E là Hoạt động cuối cùng được bắt đầu và nó đang hiển thị. Nếu bạn đóng E, D sẽ được hiển thị. Nếu bạn đóng D, C sẽ được hiển thị. Vân vân.
Lưu ý rằng Hoạt động B
và D
là cùng một hoạt động. Điều gì sẽ xảy ra nếu người dùng thực hiện một số sửa đổi đối với D weather screen
và sau đó quyết định đóng hoạt động, sau đó đóng C Map view
?
Sau đó, người dùng sẽ quay lại màn hình thời tiết và người dùng sẽ không hài lòng vì những thay đổi được thực hiện ở cấp độ D weather screen
không được lưu trong cấp độ B weather screen
. Mặc dù đó là cùng một hoạt động, nhưng đó là một STATE khác của hoạt động đó.
Người dùng có 5 lớp hoạt động và hai trong số đó là cùng một hoạt động. Việc bật tất cả 5 khỏi ngăn xếp sẽ tạo ra hiện tượng mà bạn sẽ tương tác với hai phiên bản khác nhau của cùng một hoạt động và có thể khá khó hiểu.
Người dùng thường không nghĩ về một chồng hoạt động cứng nhắc. Họ nghĩ: "ooh chế độ xem thời tiết, tôi sẽ thực hiện thay đổi ở đó" và sau đó họ muốn quay lại chế độ xem Bản đồ. Sau đó sao lưu lại vì họ muốn quay lại màn hình Đăng nhập. Tại sao lại B weather app
hiển thị và tại sao nó không lưu cài đặt từ cấp D
?
Lập trình viên có thể giảm bớt một số nhầm lẫn nếu các Hoạt động B
và D
được liên kết ở trạng thái. Cách này thay đổi cách khác. Mỗi lần người dùng mở một màn hình thời tiết mới, nó sẽ bí mật mở một phiên bản duy nhất của màn hình thời tiết.
Trong những trường hợp này, có thể mong muốn thay đổi nhiệm vụ Mối quan hệ của Hoạt động. Người dùng sẽ thay đổi cấp độ D. Sau đó sao lưu lên cấp B. Và xem những thay đổi ở B đã được thực hiện đối với D.
Chương trình giữ một ngăn xếp mà bạn có thể sao lưu thông qua, điều này thật tuyệt và khi người dùng mở X phiên bản của cùng một hoạt động ở những nơi ngẫu nhiên, tất cả chúng đều là một.
Trình chiếu với giải thích thêm: http://www.slideshare.net/RanNachmany/manipulation-android-tasks-and-back-stack
singleInstance
thay vì sử dụng taskAffinity
?
taskAffinity
chút nào :-( Lời giải thích rất mơ hồ. Thật ngạc nhiên khi câu trả lời của luận văn nhận được rất nhiều phiếu tán thành.
taskAffinity
được sử dụng để chỉ định tên của tác vụ mà hoạt động thích chạy trong. Khi an Intent
chứa cờ FLAG_ACTIVITY_NEW_TASK
, hoạt động sau đó sẽ được đưa vào tác vụ cụ thể này (được định nghĩa bởi taskAffinity
).
Although it's the same activity, it's a different STATE of that activity.
Tôi sẽ nói, "Đó là một ví dụ khác của hoạt động đó."
Mối quan hệ chỉ ra nhiệm vụ mà một hoạt động thích thuộc về.
Mối quan hệ phát huy tác dụng trong hai trường hợp:
Khi ý định khởi chạy một hoạt động có chứa cờ FLAG_ACTIVITY_NEW_TASK.
Khi một hoạt động có thuộc tính allowTaskReparenting được đặt thành "true".
Vui lòng tham khảo http://developer.android.com/guide/components/tasks-and-back-stack.html
Bạn có thể tìm thấy tất cả các trường hợp (và một số trường hợp cạnh) trong bản trình bày chi tiết này
Vui lòng tham khảo Thao tác các tác vụ Android và ngăn xếp trở lại