Đây là tình huống của tôi: Tôi đang xây dựng một trò chơi cho android và hoạt động của trò chơi của tôi bao gồm một chế độ xem bề mặt tùy chỉnh có chủ đề cho logic trò chơi và hiển thị. Kiến trúc tương tự như bản trình diễn LunarLander từ trang web của Google."Chủ đề đã bắt đầu" khi tiếp tục hoạt động
Khi hoạt động bắt đầu nó tạo ra surfaceView và gọi phương pháp này:
@Override
public void surfaceCreated(SurfaceHolder holder)
{
renderThread.start();
}
Khi tôi bấm nút home để thoát khỏi trò chơi, phương pháp onPause() được gọi, trong đó kêu gọi surfaceDestroyed(). Trong surfaceDestroyed Tôi dừng trò chơi Chủ đề bằng cách gọi:
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
synchronized(holder)
{
renderThread.stop();
}
}
Ứng dụng này sẽ hoạt động bình thường. Sau đó, khi tôi khởi chạy lại ứng dụng bằng cách nhấn vào biểu tượng, tôi nhận được thông báo "Chủ đề đã bắt đầu" trong nhật ký cùng với cửa sổ bật lên "lực đóng" trên màn hình. Thông báo này xảy ra khi hoạt động đi vào phương thức "surfaceCreated" khi nó gọi start() trên chuỗi render.
Bây giờ tôi đã xem xét nó hàng giờ và không thể hiểu tại sao điều này xảy ra. Tôi tin rằng chủ đề của tôi bị dừng lại khi tôi đóng ứng dụng để tôi không hiểu tại sao nó nói nó đã bắt đầu.
Xin chào, cảm ơn bạn đã trả lời. Tôi đã thay thế stop() bằng một phép nối() trong một vòng lặp while. Tôi tin rằng nó đợi trước khi dừng sợi chỉ. Nhưng tôi vẫn còn có cùng một vấn đề, tôi đang thiếu một cái gì đó? Khi bắt đầu chuỗi. Tôi hiểu rằng thread không thể được bắt đầu nhiều hơn một lần do đó thông báo lỗi. Vì vậy, bạn có nghĩ rằng tôi nhận được lỗi này chỉ vì thread không được dừng lại đúng cách? Cảm ơn – NioX5199
@ NioX5199: không, tham gia() cũng không dừng chuỗi, nó chờ nó tự hoàn thành. Bạn nhận được lỗi vì Chủ đề đã được bắt đầu. Chủ đề * không thể * bị "dừng" và khởi động lại. Như tôi đã viết: để thực hiện tạm dừng luồng cho đến khi điều kiện được đáp ứng, bạn sử dụng Object.wait(). –
Có lẽ anh ta cũng không nên làm theo cách đó. Việc tạo lại luồng có lẽ là một cách tiếp cận tốt hơn. – alexanderblom