Một vài ngày trước, tôi đã phát hiện ra rằng singleton có thể trở thành chống mẫu trong Android. Singleton của tôi (class với private constructor và instance được lưu trữ trong static field) đã bị xóa (instance đã bị xóa mặc dù thực tế các hoạt động khác vẫn đang sử dụng singleton này (thông qua phương thức getInstance()) nên một instance khác phải được tạo). lần đầu tiên được gọi đã bị xóa (sau khi gọi kết thúc cho chỉ một hoạt động này).Vòng đời của singum dựa trên enum trên Android
Tôi đã đọc vấn đề này có thể được giải quyết như thế nào nhưng tôi cũng chỉ đọc "Java hiệu quả". Có nói rằng "loại enum phần tử đơn là cách bast để thực hiện một singleton".
Vì vậy, bây giờ tôi tự hỏi điều gì sẽ là vòng đời của singleton được tạo theo cách này trong ứng dụng Android? Nó sẽ giống như trong trường hợp "triển khai singleton chuẩn" vậy sau khi phá hủy hoạt động mà từ đó nó được gọi lần đầu tiên nó sẽ bị phá hủy (ngay cả khi nó được sử dụng trong các hoạt động khác)?
Tôi không hỏi về thực hiện singleton android thích hợp hoặc mẫu đơn singleton (nó là hoa văn hoặc chống mẫu vv) nhưng tôi muốn biết vòng đời của đối tượng enum singleton như thế nào và khi nào nó sẽ bị phá hủy.
Singleton là một mô hình chống nói chung.Nếu bạn thực sự cần một cái gì đó, chỉ cần không làm cho một cái gì đó khác: P – cHao
Điều này có thể cần một số làm rõ: Singleton của bạn (tức là mã bạn đưa vào enum của bạn) và tham chiếu từ Android biến mất khi hoạt động của bạn đã thoát (và ứng dụng của bạn đã bị tắt)? Đây sẽ là hành vi mong đợi cho bất kỳ singleton nào - tất cả trạng thái bạn cần giữ lại giữa các lần khởi động lại ứng dụng phải được lưu trữ vĩnh viễn - như 'SharedPreferences' OTOH, tôi hoàn toàn có thể hiểu lầm câu hỏi :-D – Jens
@Jens Tôi đã cập nhật câu hỏi của mình. – mmatloka