2013-04-08 38 views
6

Nếu hoạt động A bắt đầu hoạt động B cho kết quả, tôi đã ấn tượng rằng phương thức hoạt động của onStop B được gọi trước phương thức hoạt động onActivityResult A. Tại sao lại không như vậy? Tôi chỉ thử nghiệm nó với một biến tĩnh được thiết lập trong B.onStop nhưng khi tôi đọc nó trong A.onActivityResult biến là cho đến khi null.vòng đời android onActivityResult vs onStop

+2

Vui lòng chỉ ra trong tài liệu mà hành vi mong đợi của bạn được mô tả. – CommonsWare

+0

"phương thức hoạt động của onStop B được gọi trước phương thức onActivityResult của hoạt động A" - đây là hành vi mặc định và điều này cũng được mong đợi. Ý kiến ​​của bạn chống lại nó là gì? –

+2

@CommonsWare: cũng không phải mọi thứ đều cần được ghi lại. Tôi tưởng tượng trước tiên tôi phải rời khỏi hoạt động B trước khi trở lại hoạt động A. Nó chỉ có vẻ hợp lý trong vấn đề đó. – learner

Trả lời

3

Tôi nghĩ điều bạn muốn làm là gọi số , tuy nhiên, bạn không muốn làm quá nhiều ở đó. Here is what the docs say:

protected void onPause() Thêm mực API 1

gọi như là một phần của vòng đời hoạt động khi một hoạt động đang diễn ra vào nền, nhưng đã không (chưa) bị giết. Các đối tác để onResume().

Khi hoạt động B được khởi chạy trước hoạt động A, gọi lại này sẽ được gọi trên A. B sẽ không được tạo cho đến khi OnPause() trả về, vì vậy đảm bảo không làm gì dài ở đây.

callback này chủ yếu sử dụng để lưu bất cứ tiểu bang dai dẳng hoạt động được chỉnh sửa, để trình bày một "chỉnh sửa tại chỗ" mô hình để người dùng và đảm bảo không có gì bị mất nếu không có đủ nguồn lực để bắt đầu mới hoạt động mà không giết người lần đầu. Đây cũng là nơi thích hợp để làm những việc như ngừng hoạt ảnh và những thứ khác mà tiêu thụ lượng CPU đáng chú ý để chuyển sang hoạt động tiếp theo nhanh nhất có thể hoặc đóng tài nguyên là quyền truy cập độc quyền như vậy như máy ảnh.

2

Tôi nghĩ rằng ấn tượng của bạn là sai, onActivityResult được gọi trước khi onResume và tài liệu dành onStop tại http://developer.android.com/reference/android/app/Activity.html trong bảng sau biểu đồ chu kỳ hoạt động khẳng định

Được gọi là khi hoạt động là không còn hiển thị cho người sử dụng, vì một hoạt động khác đã được tiếp tục và bao gồm hoạt động này. Điều này có thể xảy ra vì một hoạt động mới đang được bắt đầu, một hoạt động hiện tại đang được đưa ra trước một hoạt động này, hoặc điều này đang bị phá hủy.

Vì vậy, onResume trong A được gọi trước khi onStop trong B được gọi.

Các vấn đề liên quan