Một vài ngày sau tôi đã được yêu cầu viết ra kịch bản mà ondestroy() được gọi mà không onpause() hoặc onstop() được gọi. Có thể không. Nếu có, xin giải thích.kịch bản Android nơi ondestroy() được gọi mà không onpause() hoặc onstop()
Trả lời
Nếu bạn thử mã dưới đây, bạn sẽ tìm thấy một trường hợp trong đó onDestroy()
thực sự được gọi trong khi onPause()
và onStop()
Sao lưu cuộc gọi chu kỳ cuộc gọi được Bỏ qua.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
finish();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.e("MainActivity", "onDestroy");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.e("MainActivity", "onPause");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.e("MainActivity", "onStop");
}
Do đó, nếu bạn gọi finish()
, một lần Hoạt động được tạo ra, hệ thống sẽ gọi onDestroy()
trực tiếp.
này có thể khi chúng ta gọi là kết thúc() trực tiếp trong một hoạt động. Khi kết thúc() được gọi trong một hoạt động, onDestroy() được thực thi và nó thực hiện những việc sau:
- Loại bỏ bất kỳ hộp thoại nào hoạt động được quản lý.
- Đóng mọi con trỏ mà hoạt động đang quản lý.
- Đóng bất kỳ tìm kiếm mở hộp thoại
này xảy ra khi chúng ta gọi là phương pháp kết thúc để hoạt động Ví dụ: bên cuộc gọi hoạt động của bạn this.finish();
onPause() và onStop() sẽ không được áp dụng nếu finish() được gọi từ trong phương thức onCreate(). Điều này có thể xảy ra, ví dụ, nếu bạn phát hiện lỗi trong kết quả onCreate() và kết thúc cuộc gọi(). Trong trường hợp này, tuy nhiên, bất kỳ dọn dẹp bạn dự kiến sẽ được thực hiện trong onPause() và onStop() sẽ không được thực thi.
Mặc dù onDestroy() là lần gọi lại cuối cùng trong vòng đời của hoạt động , điều đáng nói là cuộc gọi lại này không phải lúc nào cũng được gọi là được gọi và không nên dựa vào để tiêu diệt tài nguyê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ỳ phương thức nào khác), vì vậy, không nên sử dụng để thực hiện những việc được giữ nguyên ở khoảng sau khi quá trình này biến mất. nó là tốt hơn có các nguồn lực tạo ra trong onStart() và onResume(), và đã họ bị phá hủy trong onStop() và onPause, tương ứng.
refrence - https://www.toptal.com/android/interview-questions
- 1. android - dữ liệu được lưu trữ trong onPause, onStop hoặc onSaveInstanceState
- 2. Android: stopService() không gọi onDestroy()!
- 3. Tại sao thực hiện onDestroy() nếu nó không được bảo đảm để được gọi?
- 4. tại sao "onPause" không được gọi trong tình huống sau?
- 5. android: khi nào sử dụng onStart(), onStop()?
- 6. Android - onStop() sẽ được gọi với độ trễ
- 7. Hoạt động Android trênDestroy() được gọi trên khóa màn hình
- 8. Kịch bản không được gọi là
- 9. Android: OnPause() có đảm bảo được gọi sau khi kết thúc() không?
- 10. Gọi chức năng Lua mà không thực hiện kịch bản
- 11. Android ViewPager không gọi onDetach/onDestroy/onDestroyXem khi được thay thế trong một thùng chứa
- 12. Tại sao onDestroy không hoạt động A không được gọi sau khi một cuộc gọi để kết thúc() trong ActivityB
- 13. Dịch vụ Android có được bảo đảm để gọi onDestroy() không?
- 14. Tại sao không onRestoreInstanceState được gọi sau onStart?
- 15. Phương pháp chính không được gọi trong kịch bản Scala
- 16. android: camera onPause/onResume issue
- 17. Sử dụng onDestroy() trong android
- 18. Có thể gọi phương thức gọi lại sau khi onDestroy không?
- 19. vòng đời android onActivityResult vs onStop
- 20. GLSurfaceView: Tôi có cần phải gọi onPause/onResume không?
- 21. Fragment's onActivityCreated() được gọi sau onDestroy() của Activity
- 22. Phương thức hoạt động: onCreate() và onDestroy()
- 23. Git Bash trên Windows - Nơi lưu trữ và cách gọi kịch bản Bash
- 24. Có thể chạy các kịch bản lệnh Node.js mà không cần gọi `nút` không?
- 25. Người mới bắt đầu Android: onDestroy
- 26. Dịch vụ đám mây Azure - Có trao đổi VIP khiến OnStop() được gọi không?
- 27. Kịch bản gọi nhanh (cho ổ đĩa USB được chèn)
- 28. Dịch vụ Android onCreate được gọi nhiều lần mà không cần gọi trênDestroy
- 29. Android onStop() không được gọi khi bắt đầu một hoạt động mới ở chế độ nhiều cửa sổ
- 30. thực thi kịch bản lệnh shell mà không gọi sh ngầm rõ ràng
Có một scenerio nơi onPause được gọi là một lần trước khi onStop(), và trong một sợi công nhân không được dừng lại, kết thúc() được gọi trong đó sẽ bỏ qua onPause() và nhận onDestroy() được gọi là. –