2012-12-18 29 views
9

Nếu java cung cấp Bộ sưu tập rác, thì nhu cầu onDestroy() trong Activity LIfecycle là gì?Sử dụng onDestroy() trong android

+1

Kiểm tra này: [Chính xác những gì onDestroy() phá hủy?] [1] [1]: http://stackoverflow.com/a/4981927/556975 Hy vọng nó sẽ giúp bạn. Cảm ơn. –

Trả lời

11

onDestroy: Cuộc gọi cuối cùng bạn nhận được trước khi hoạt động của bạn bị hủy. Điều này có thể xảy ra do hoạt động kết thúc (có người gọi là kết thúc() trên đó hoặc do hệ thống tạm thời hủy hoạt động này để tiết kiệm không gian

Đây là ví dụ ......

public void onDestroy() { 

    super.onDestroy(); 

} 
+7

Tại sao mọi người gọi 'finish()' bên trong 'onDestroy', không có ý nghĩa gì cả. – xmen

+1

Bạn không thể đếm trên onDestroy() đang được gọi. "Có những tình huống mà hệ thống sẽ chỉ đơn giản là giết chết quá trình lưu trữ của hoạt động mà không gọi phương thức này (hoặc bất kỳ phương pháp nào khác) trong đó, vì vậy nó không nên được sử dụng để làm những thứ được dự định ở lại sau khi quá trình biến mất." http://developer.android.com/reference/android/app/Activity.html#onDestroy() – Robert

0

Các onDestroy là có để cho ứng dụng của bạn có một cơ hội cuối cùng để làm sạch mọi thứ trước khi hoạt động này không được tiêu huỷ

Điều Exit Button in Android

1

onDestroy() là một phương pháp được gọi là bởi khuôn khổ khi hoạt động của bạn đóng cửa. Nó được gọi là để cho phép hoạt động của bạn thực hiện bất kỳ hoạt động đóng cửa nào mà nó có thể muốn thực hiện. Phương pháp này không thực sự liên quan đến việc thu gom rác (mặc dù các hoạt động tắt của bạn — nếu có bất kỳ — nào có thể liên quan đến việc phát hành thêm tài nguyên có thể được gc'ed). Đặc biệt, nó không có gì để làm với C + + destuctors (mặc dù tên của nó).

Nếu bạn không có hoạt động tắt để làm, bạn không cần phải ghi đè lên. Lớp cơ sở thực chất không có gì.

0

Nó mang đến cho chương trình của bạn cơ hội làm những việc như tài nguyên dọn dẹp (nói chủ đề) để chúng không gây ô nhiễm cho ứng dụng liên quan. Nếu bạn không có bất kỳ sử dụng cho nó, sau đó không ghi đè lên nó.

Xem: onDestroy()-Android Reference

1

Hệ điều hành quyết định khi nào mọi thứ "biến mất". OnDestroy có sẵn để cho ứng dụng của bạn có cơ hội cuối cùng để dọn sạch mọi thứ trước khi hoạt động bị phá hủy nhưng điều đó không có nghĩa là hoạt động sẽ thực sự được GC. Đây là một số article tốt mà tôi khuyên mọi người nên đọc liên quan đến việc tạo nút thoát. Mặc dù nó không chính xác những gì bạn hỏi, nhưng các khái niệm sẽ giúp bạn hiểu những gì đang xảy ra.

0

onDestroy có thể được gọi khi một hoạt động bị phá hủy, nhưng bạn không thể tin tưởng vào nó. Có những tình huống mà hệ thống sẽ đơn giản giết quá trình lưu trữ của hoạt động mà không gọi phương thức này (hoặc bất kỳ người nào khác) trong đó, không nên được sử dụng để làm những việc được dự định vẫn còn tồn tại sau khi quá trình biến mất.

Xem: http://developer.android.com/reference/android/app/Activity.html#onDestroy()

1

Bạn có thể sử dụng onDestroy() để hoàn tất chương trình. Tôi đã sử dụng nó trong đoạn code dưới đây để nói với máy chủ rằng máy khách đang đóng socket của nó đến máy chủ để tôi có thể thông báo cho người dùng về cuối máy chủ rằng máy khách đã ngắt kết nối.

khách hàng:

... 
protected void onDestroy(){ 
    super.onDestroy(); 
    if(connected) { 
     clientMessage.println("exit"); 
     clientMessage.close(); 
     try { 
      socket.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    finish(); 
} 
... 

server:

... 
while (connected) { 
    input = clientMessage.readLine(); 
    if ("exit".equals(input)){ 
     break; 
    } 
    ... 
} 
... 
Các vấn đề liên quan