2010-12-12 25 views

Trả lời

53

Nó thực sự phụ thuộc vào những gì bạn muốn thực hiện trong onDestroy. Đây là những gì super.onDestroy thực hiện (theo thứ tự đó):

  • Bỏ qua mọi hộp thoại mà hoạt động đang quản lý.
  • Đóng mọi con trỏ mà hoạt động đang quản lý.
  • Đóng tất cả tìm kiếm mở hộp thoại

Nếu logic bạn đặt bên onDestroy có cái gì để làm với những ba điều mà Android không, sau đó bạn có thể phải lo lắng về đơn đặt hàng. Nếu không, và trong hầu hết các trường hợp, nó không quan trọng.

+1

bạn đã tìm thấy thông tin này ở đâu? Tôi tò mò về các dịch vụ, v.v. –

+1

Android là OpenSouce ... chỉ cần xem mã nguồn: P – Cristian

5

Câu hỏi của bạn là gì? Bạn có thể làm điều đó theo một trong hai cách, nó phụ thuộc nếu bạn muốn số siêu hạng của bạn là onDestroy() được gọi trước của bạn. Thông thường tôi không nghĩ rằng nó quan trọng trong Android.

Ngoài ra, onDestroy() không phải là hàm hủy. Nó không thực sự phá hủy vật thể. Nó chỉ là một phương pháp được gọi là dựa trên một trạng thái nhất định. Vì vậy, trường hợp của bạn vẫn còn sống và rất tốt * sau khi siêu lớp onDestroy() chạy và trả về.

* Rất có thể, android được tự do giết hoạt động bất cứ lúc nào, nhưng bạn có thể giả sử nó vẫn ở đó.

+4

trong C++ ví dụ bạn hủy lớp siêu sau khi bạn hoàn thành việc dọn dẹp các đối tượng riêng tư. nếu bạn phá hủy lớp siêu đầu tiên, tôi không nghĩ rằng đó là một thực hành tốt, tôi thậm chí nghĩ rằng ứng dụng sẽ sụp đổ kể từ khi dụ sẽ bị phá hủy! – Vassilis

+0

Như ông nói, đây không phải là một destructor, chỉ cần nói cho các thành phần để làm sạch bất kỳ trạng thái nó muốn. Đối tượng vẫn còn sau cuộc gọi onDestroy(). Nói chung, thứ tự không quan trọng và sẽ không gây ra sự cố. – hackbod

6

Trong ThreadSample.zip trên Reporting Work Status training, có một bình luận trong onDestroy()

public void onDestroy() { 
    ... 
    // Must always call the super method at the end. 
    super.onDestroy(); 
} 

Vì vậy, có lẽ khi sử dụng Broadcast Bộ thu, các siêu phải đi ở cuối.

+2

Điều đó có ý nghĩa. Nếu bạn muốn làm * bất cứ điều gì * bạn chắc chắn không muốn làm điều đó trên một nửa bị phá hủy (làm sạch-up) đối tượng. – vbence

2

Vì chúng ta đang mở rộng từ các lớp cơ sở android, nên luôn luôn có cách tiếp cận tốt để cho lớp cha tạo và khởi tạo chính nó đầu tiên trong quá trình tạo và để cho con uninitialize và giải phóng tài nguyên đầu tiên trong khi tắt/dừng các thành phần. Đây là cách tiếp cận được khuyến khích để được theo sau. tuy nhiên, nó hoàn toàn phụ thuộc vào các trường hợp sử dụng và kịch bản.

public void onCreate(Bundle bundle){ 
    super.onCreate(bundle); 
    //perform child class initializations. 
} 

public void onDestroy(){ 
    //perform uninitialization and free resource 
    super.onDestroy(); 
} 
Các vấn đề liên quan