Khi bạn bắt đầu một hoạt động mới, hoạt động hiện tại được đẩy lên ngăn xếp của tác vụ hiện tại. (Bạn có thể thay đổi hành vi này qua cờ và/hoặc tệp kê khai, nhưng đây là hành vi mặc định.) Khi người dùng nhấn chức năng quay lại, hoạt động hàng đầu được hoàn tất và ngăn xếp được bật lên. Kết quả là người dùng thấy ứng dụng quay trở lại hoạt động trước đó.
Thật tuyệt khi gọi finish()
sau khi bắt đầu một hoạt động mới. Kết quả sẽ là hoạt động hiện tại (không còn ở trên cùng của ngăn xếp, vì bạn vừa mới bắt đầu một hoạt động mới) sẽ bị xóa khỏi ngăn xếp. Sau đó, khi người dùng nhấn Back, nó sẽ chuyển đến hoạt động trước đó trên ngăn xếp lại (hoặc thoát khỏi ứng dụng của bạn nếu ngăn xếp trống).
Nếu bạn đang nhảy qua lại giữa các hoạt động A và B bằng cách bắt đầu một hoạt động mới và không bao giờ gọi số finish()
, điều này có thể gây ra ngoại lệ OOM khi chồng lấp đầy các phiên bản của từng hoạt động.
Bạn có thể đọc thêm về điều này trong chủ đề hướng dẫn Tasks and Back Stack. Nó cũng mô tả làm thế nào để đối phó một cách chính xác với đi xe đạp giữa các hoạt động.
Nguồn
2013-08-07 18:45:45
điều gì xảy ra nếu người dùng muốn quay lại hoạt động trước bằng cách nhấp vào nút quay lại? – Raghunandan
Không. Vấn đề của bạn ở đâu đó khác. – fdreger
Bạn đang sử dụng 'Bitmap' (hoặc một bộ sưu tập) ở bất kỳ đâu? Nếu bạn chưa sử dụng [Mat Memory Analyzer Tool] (http://www.eclipse.org/mat/), bây giờ là thời điểm tốt. – haventchecked