onStop()
sẽ (ví dụ) được gọi khi bạn rời khỏi hoạt động đối với một số hoạt động khác (chỉnh sửa:. Gần như thấy commonswares bình luận về các hoạt động theo chủ đề của hộp thoại). Ví dụ: nếu bạn sử dụng startActivity()
trong hoạt động A để bắt đầu hoạt động B. Khi bạn nhấn trở lại hoạt động B, bạn sẽ trở lại hoạt động A và onStart
sẽ được gọi.
Điều này khác với một số lý do có thể được gọi mà không cần onStop
được gọi. Nếu ví dụ màn hình hết thời gian hoặc bạn nhấn nút standy sẽ được gọi, nhưng có thể không phải là onStop
(tùy thuộc vào bộ nhớ có sẵn và không có gì), do đó, nó là "tạm dừng nhẹ hơn". onStop có thể sẽ được gọi là cuối cùng ngay cả trong trường hợp này, nhưng không phải ngay lập tức.
Ok, nhưng việc sử dụng
Thường không có sử dụng cụ thể là gì, nhưng có thể có. Vì các hoạt động của bạn sẽ giữ trạng thái bộ nhớ của nó trên stack ngay cả sau khi bạn bắt đầu một số hoạt động khác, ngăn xếp đó sẽ tăng lên với số hoạt động bắt đầu (chiều cao của ngăn xếp). Điều này có thể dẫn đến việc sử dụng bộ nhớ lớn trong một số ứng dụng. Sau một thời gian, khung sẽ khởi động và giết một số hoạt động trên ngăn xếp, nhưng điều này khá thẳng thắn và có thể sẽ có nghĩa là nhiều trạng thái sẽ được giữ lại khi trở về.
Vì vậy, một ví dụ sử dụng cho onStart/onStop
là nếu bạn muốn phát hành một số trạng thái khi để lại một hoạt động cho người khác và tạo lại nó khi bạn quay trở lại. Tôi đã sử dụng nó để đặt listadapters thành rỗng, cache hình ảnh trống rỗng và tương tự (trong các ứng dụng rất cụ thể). Nếu bạn muốn giải phóng bộ nhớ được sử dụng bởi các khung nhìn hiển thị trong một listadapter, bạn có thể tạo lại nó trong quá trình khởi động và để cho các khung nhìn được chọn bởi gc. Điều này sẽ làm tăng khả năng rằng phần còn lại của trạng thái bộ nhớ của hoạt động sẽ sống.
Một số tài nguyên có thể được coi là đủ tốt để lưu trong khi thể hiện hoạt động vẫn còn và một số chỉ khi nó ở phía trước ngăn xếp. Bạn có thể quyết định điều gì là tốt nhất trong ứng dụng của mình và mức độ chi tiết của việc tạo/bắt đầu/tiếp tục cung cấp cho bạn điều đó.
Nguồn
2012-03-29 22:17:09
"onStop() sẽ được gọi khi bạn rời hoạt động cho một số hoạt động khác" - trên thực tế, nó sẽ được gọi khi hoạt động của bạn không còn hiển thị nữa. Nếu một hoạt động theo chủ đề thoại đến nền trước, 'onStop()' không được gọi. – CommonsWare
Điểm tốt. Hoạt động gọi điện có thể vẫn hiển thị trong nền trong ví dụ đó (và công cụ tái chế sau đó sẽ là xấu). Tôi đã cho thấy một ví dụ về nơi nó xảy ra và làm thế nào tôi đã sử dụng để giảm việc sử dụng bộ nhớ, nhưng đây là một sự miễn trừ tốt. Như một quy luật chung nó vẫn còn tốt. Tôi vẫn chưa thấy các hoạt động của hộp thoại gọi nhau. –
Ồ, không nghi ngờ gì nữa, các hoạt động theo chủ đề thoại là không bình thường. – CommonsWare