LƯU Ý: Câu trả lời này đã nhận được rất nhiều sự chú ý, mà tôi cần cập nhật nó. Kể từ khi câu trả lời ban đầu được đăng, bình luận từ @dzeikei đã nhận được gần như nhiều sự chú ý như câu trả lời ban đầu. Vì vậy, đây là 2 giải pháp có thể:
1. Nếu chủ đề nền của bạn có một tham chiếu đến một Context
đối tượng:
Đảm bảo rằng các luồng nhân viên nền của bạn có quyền truy cập vào một đối tượng Ngữ cảnh (có thể là bối cảnh Ứng dụng hoặc bối cảnh Dịch vụ). Sau đó, chỉ cần làm điều này trong chủ đề công nhân nền:
// Get a handler that can be used to post to the main thread
Handler mainHandler = new Handler(context.getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {....} // This is your code
};
mainHandler.post(myRunnable);
2. Nếu chủ đề nền của bạn không có (hoặc cần) a Context
đối tượng
(được đề xuất bởi @dzeikei):
// Get a handler that can be used to post to the main thread
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {....} // This is your code
};
mainHandler.post(myRunnable);