Bạn đã khám phá lại sự không phù hợp giữa tuổi thọ của các đối tượng Java (gắn liền với tuổi thọ của quy trình ứng dụng) và tuổi thọ của đối tượng kết cấu (gắn liền với cuộc sống của ngữ cảnh OpenGL được gắn với khả năng hiển thị của Hoạt động) .
Trên ứng dụng "thoát", chỉ hoạt động đã thoát và Android đang lưu vào bộ nhớ cache trong quá trình chạy ẩn. Khi bạn "khởi động lại" ứng dụng Android vừa mới bắt đầu Hoạt động mới trong cùng một quy trình. Trong trường hợp này, Activity đang tìm đối tượng Java Texture hợp lệ, nhưng các byte bên dưới nó "trỏ tới" trong ngữ cảnh OpenGL sẽ biến mất (vì bối cảnh OpenGL bị vô hiệu khi Activity không còn nhìn thấy được).
Khắc phục là tải lại họa tiết khi tạo hoạt động. Bạn phải chắc chắn rằng tất cả các đối tượng của bạn có chứa các kết cấu (và các đối tượng chứa các đối tượng có chứa các kết cấu, vv) được gắn với vòng đời Activity. Nói chung điều này có nghĩa là tránh các biến tĩnh (là một phần của vòng đời ứng dụng), nhưng bạn có thể nhảy qua các vòng để vô hiệu hóa và tái khởi tạo các hình cầu nếu bạn muốn.
Nguồn
2012-09-20 15:50:26