Sự khác biệt gì nếu tôi gọi System.exit()
so với killProcess()
.
Tôi quan tâm đến sự khác biệt chỉsự khác biệt giữa System.exit() và killProcess()
Trả lời
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
Chúng ta nên sử dụng cái gì?
Không ai, đọc Is quitting an application frowned upon?
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
Ngoài ra, đôi khi nó không phải là dev, nhưng ai đó cao hơn yêu cầu nó –
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.
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ớ .
- 1. Sự khác biệt giữa $ (...) và `...`
- 2. Sự khác biệt giữa. và #
- 3. Sự khác biệt giữa $ * và $ @
- 4. Sự khác biệt giữa ". +" Và ". +?"
- 5. Sự khác biệt giữa "**/* /" và "** /"?
- 6. Sự khác biệt giữa = và: =
- 7. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 8. Sự khác biệt giữa Html.RenderAction và Html.Action
- 9. Sự khác biệt giữa cookie và phiên?
- 10. Sự khác biệt giữa '.' và "." trong java
- 11. Sự khác biệt giữa SimpleDB và S3
- 12. C++ - Sự khác biệt giữa (*). và ->?
- 13. Sự khác biệt giữa offsetHeight và clientHeight
- 14. Sự khác biệt giữa RDLC và SSRS
- 15. Sự khác biệt giữa "\ n" và Environment.NewLine
- 16. Sự khác biệt giữa qt và PyQt4
- 17. Sự khác biệt giữa AForge và OpenCV
- 18. Sự khác biệt giữa toFixed() và toPrecision()?
- 19. sự khác biệt giữa cacao và cocoatouch
- 20. Sự khác biệt giữa smtpClient.send() và smtpClient.SendAsync()?
- 21. Sự khác biệt giữa window.location.host và window.location.hostname
- 22. Sự khác biệt giữa DTLS và TLS
- 23. Sự khác biệt giữa Mealy và Moore
- 24. sự khác biệt giữa createRfcommSocketToServiceRecord và createRfcommSocket
- 25. Sự khác biệt giữa Arrays.sort() và Arrays.parallelSort()
- 26. sự khác biệt giữa orm và pdo
- 27. Sự khác biệt giữa nproc và ulimit?
- 28. Sự khác biệt giữa apc_add và apc_store?
- 29. Sự khác biệt giữa mb_substr và substr
- 30. Sự khác biệt giữa p4diff và p4diff2
'runFinalizersOnExit' là không an toàn: http://developer.android.com/reference/java/lang/Runtime.html#runFinalizersOnExit (boolean) – Budda