2011-09-30 31 views

Trả lời

2

Tôi không nghĩ có bất kỳ sự khác biệt nào. mặc dù với System.exit(), bạn nên gọi runFinalizersOnExit trước tiên

+2

'runFinalizersOnExit' là không an toàn: http://developer.android.com/reference/java/lang/Runtime.html#runFinalizersOnExit (boolean) – Budda

2

Chúng ta nên sử dụng cái gì?

Không ai, đọc Is quitting an application frowned upon?

+8

Hãy để dev làm những gì anh ấy sẽ làm. Nếu anh ta làm một chương trình xấu, không ai sẽ sử dụng nó hoặc người nào khác tôi chắc chắn rằng dev đang làm điều đúng. Chỉ cần không đặt câu trả lời cho câu hỏi, thay vào đó hãy sử dụng nhận xét. – MinceMan

+1

Ngoài ra, đôi khi nó không phải là dev, nhưng ai đó cao hơn yêu cầu nó –

0

Cả. Sử dụng kết thúc(). Xem this và khuyến nghị liên kết aromero. Hãy để Android làm những gì nó có nghĩa là để làm: quản lý vòng đời hoạt động của bạn. Nó được thiết kế theo cách này vì một lý do.

2

Có vẻ như System.exit() chỉ là tốt về mọi mặt như giết - nhưng đơn giản hơn và ít phụ thuộc vào những thứ khác.

Một số người đã đề xuất rằng runFinalizersOnExit được đặt nhưng theo tài liệu được coi là không an toàn và bị loại bỏ dần là 1.0 - vì vậy, tôi đoán bỏ qua phần đó.

Trái ngược với các đề xuất khác, kết thúc() không kết thúc quá trình Linux đang chạy ứng dụng và không giải phóng tất cả bộ nhớ được ứng dụng sử dụng.

Được cấp, android được thiết kế sao cho nhiều trường hợp không cần phải thoát khỏi ứng dụng (Với chi phí tạm dừng sau, android sẽ giết ứng dụng cũ của bạn khi cần bộ nhớ) - tuy nhiên nếu bạn không muốn vì bất kỳ lý do gì để giết ứng dụng của bạn System.exit() có vẻ là cách ý tưởng. Nó tắt máy ảo java đang chạy ứng dụng của bạn - vì vậy tất cả tài nguyên, bộ nhớ và luồng sẽ bị xóa hoàn toàn.

(Lưu ý rằng bạn có thể chỉ định trong tệp kê khai của mình rằng một số luồng nên chạy trong các quy trình linux khác nhau - trong trường hợp đó System.exit() có thể sẽ chỉ giết một phần ứng dụng của bạn - nhưng đó là công cụ nâng cao hơn.)

Trên thực tế, tôi chỉ chạy adb shell ps|grep app và tôi thấy ứng dụng mẫu com.example.android.lunarlander mà tôi chưa chạy trong khoảng một tuần - vẫn còn trong bộ nhớ, vẫn chiếm gần 100000 byte bộ nhớ .

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