2012-07-25 43 views
14

Đôi khi tôi cảm thấy rằng việc sử dụng AsyncTask là khá quá mức cần thiết cho công việc, tôi đang tìm kiếm chức năng tương tự như SwingUtilities.invokeLater trong Android. Bởi vì tôi chỉ muốn thực hiện một dòng mã, không có điểm để tạo ra một lớp mới cho điều đó.Chức năng tương tự SwingUtilities.invokeLater trong android?

Trả lời

22

Có lẽ bạn đang tìm kiếm:

Activity.runOnUiThread(Runnable action) 
1

Tôi không nhớ chính xác những gì invokeLater() làm, nhưng nếu bạn muốn thực hiện một cái gì đó bị trì hoãn, bạn có thể sử dụng postDealayed(). Điều đó xảy ra trên chuỗi giao diện người dùng, vì vậy không phù hợp với các tác vụ chạy dài, một cách tự nhiên.

+1

'invokeLater()' đặt một 'Runnable' vào một hàng đợi để nó sẽ được thực hiện bởi EDT. –

+0

postDelayed() không phải là chức năng tĩnh? Sau đó, tôi phải thực hiện xử lý thread UI tất cả thời gian để gọi nó? – GMsoF

+0

@GregKopff vị trí của hàm (trong lớp nào)? – GMsoF

4
Activity.runOnUiThread(Runnable action); 

Các phương pháp trên là hơi khác so với invokeLater của java vì nó kiểm tra nếu bạn đã trên thread ui sau đó nó sẽ chạy Runnable của bạn ngay lập tức.

Có một cách khác để đảm bảo Runnable của bạn được gọi sau và không ngay lập tức ngay cả khi bạn đang ở trên chuỗi giao diện người dùng. Để làm điều đó bạn viết mã sau đây trong khi bạn đang ở trên các chủ đề chính .. nếu bạn gọi điều này khi trên chủ đề phụ trợ của bạn runnable sẽ được phát hành trên chủ đề phụ trợ ..

Các vấn đề liên quan