Tôi đang sử dụng GLSurfaceView (phiên bản sdk 7) trong RENDERMODE_WHEN_DIRTY. Các tài liệu nói rằng tôi cần phải gọi onPause/onResume, nhưng nó hoạt động tốt mà không có nó, vì vậy tôi tự hỏi. Nó có cần thiết không? Điều gì có thể xảy ra nếu tôi không?GLSurfaceView: Tôi có cần phải gọi onPause/onResume không?
5
A
Trả lời
10
Việc thực hiện onPause GLSurfaceView trông như thế này:
/**
* Inform the view that the activity is paused. The owner of this view must
* call this method when the activity is paused. Calling this method will
* pause the rendering thread.
* Must not be called before a renderer has been set.
*/
public void onPause() {
mGLThread.onPause();
}
Bạn có thể nhìn thấy (và các tài liệu hướng dẫn quốc gia) mà nó dừng thread rendering. Điều này gây ra một cuộc gọi nội bộ trong GLThread để stopEglLocked mà trông như thế này:
private void stopEglLocked() {
if (mHaveEgl) {
mHaveEgl = false;
mEglHelper.destroySurface();
mEglHelper.finish();
sGLThreadManager.releaseEglSurface(this);
}
}
Vì vậy, bạn có thể nhìn thấy nó phá hủy bề mặt mà là một tài nguyên hệ thống đắt tiền, và gây ra thread để chờ đợi(), mà còn tiết kiệm tài nguyên hệ thống , cpu, baterry, v.v.
Vì vậy, hãy yêu cầu bật chế độ onPause và onResume của GLSurfaceView.
Các vấn đề liên quan
- 1. Tôi có cần gọi các cuộc gọi MessageBox không?
- 2. Tôi có phải gọi addSubview sau khi gọi addChildViewController không?
- 3. Tôi có cần phải gọi SuspendLayout cho mọi điều khiển con không?
- 4. Tôi có cần phải gọi dequeueCell của UICollectionView không: từ trong cellForPath của nguồn dữ liệu :?
- 5. Tại sao tôi cần phải gọi dispose trên ASP.NET Controls?
- 6. Tôi có cần gọi Close() trên ManualResetEvent không?
- 7. Tôi có cần gọi MessageDigest.reset() trước khi sử dụng không?
- 8. SqlTransaction có cần phải có Dispose được gọi là?
- 9. Tôi có cần phải thoát khỏi đầu vào DB không?
- 10. Có phải jBPM là những gì tôi cần không?
- 11. Tôi có cần phải bỏ/đóng XDocument.Load (chuỗi) không?
- 12. Tôi có cần phải gọi getWritableDatabase() mỗi khi thao tác dữ liệu
- 13. Tránh sự cần thiết phải gọi ProcessMessages
- 14. Tôi có cần gọi lại nếu tôi không bao giờ cam kết không?
- 15. Pinch-Zoom với GLSurfaceView
- 16. tôi có cần đóng std :: fstream không?
- 17. Có phải cần đến actionbarsherlock nữa không?
- 18. Tôi có cần phải chỉ định ON DELETE NO ACTION trên Khóa Ngoại của tôi không?
- 19. GLSurfaceView trong PopupWindow
- 20. Tôi có cần phải vứt bỏ bối cảnh đồ họa được trả về từ Component.getGraphics() không?
- 21. Tôi có cần phải phát hành trình nhận dạng cử chỉ không?
- 22. Android GLSurfaceView với nền drawable
- 23. Có cần phải đặt lại fd_set giữa cuộc gọi hệ thống được chọn không?
- 24. SqlCommandBuilder.GetUpdateCommand() có cần phải được gọi trước khi sử dụng SqlDataAdpater.Update() không?
- 25. Các cuộc gọi của các nhà thầu xây dựng có cần phải đủ điều kiện không?
- 26. SunToolkit.awtLock: không mã mà phải mất một khóa như vậy cần phải được gọi vào EDT
- 27. Tôi có cần phải vô hiệu hóa biến thành viên trong trình hủy không?
- 28. Tôi có thể cập nhật window.location.hash mà không cần phải cuộn trang web không?
- 29. Tôi có cần web.config cho các ký tự không phải ASCII không?
- 30. Tôi có phải pthread_join mỗi chuỗi tôi tạo không?
nó hoạt động tốt ngay cả khi bạn rời khỏi ứng dụng và quay trở lại? Tôi đã luôn luôn cần phải thực hiện onPause và onResume để giữ cho GlSurfaceView hoạt động sau khi rời khỏi và trở về ứng dụng. – Nitrex88
Có, nó hoạt động tốt trong mọi điều kiện: màn hình chính trở lại, chuyển đổi màn hình off-unlock-return, mất tiêu điểm sau đó quay trở lại. Nó đã được chạy tốt cho một vài tuần và tôi chỉ xảy ra để đọc những thứ onPause trong tài liệu, vì vậy tôi tự hỏi. – ADB