Tôi luôn tạo hai trình xử lý: một trình bao bọc trên chủ đề chính, một trình bao bọc trên một sợi đơn.Đây có phải là cách để ngăn chặn handlerthread?
Đây có phải là phương pháp tốt nhất để bắt đầu và dừng các hoạt động này trong vòng đời Hoạt động không?
HandlerThread safeThread = null;
Handler safeHandler = null;
Handler handler = null;
@Override
public void onStart() {
if (safeThread == null) {
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.NEW) {
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.WAITING) {
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.TERMINATED) {
safeThread = null;
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
}
}
protected void onStop() {
Log.d("x", "onStop is executed");
safeHandler = null;
safeThread.quit();
safeThread.interrupt();
safeThread = null;
super.onStop();
}
safeThread.interrupt(); là cách tốt nhất để ngăn chặn thread – Sameer
có, tôi biết nhưng tôi nghĩ về điều này là an toàn khi tôi sau khi ngắt và null này. – rex
tôi đã đưa ra câu trả lời .. một điều tôi sẽ đề nghị bạn là bạn mới trên stackoverflow.IF bạn muốn đánh giá cao một người nào đó giúp sau đó cho anh ta một phiếu bầu và nếu bạn nghĩ rằng câu trả lời là tốt nhất thì đánh dấu nó là câu trả lời .. :) cổ vũ – Sameer