2011-10-26 37 views
7

Tôi đã thực hiện trên một dự án Android từ một nhân viên trong quá khứ và tôi tự hỏi nếu có một công cụ dễ sử dụng để lược tả một ứng dụng Android. Tôi có một LinearLayout với một Spinner ProgressBar bên trong nó. Bây giờ tôi đang chạy một cuộc gọi mạng trên một sợi khác nhau trong khi đó spinner đang hiển thị. Tôi sử dụng một hoạt hình dịch để hiển thị toàn bộ LinearLayout và khi cuộc gọi mạng trả về một chủ đề khác, tôi ẩn LinearLayout. Bây giờ điều này làm việc tuyệt vời nhưng tôi thấy rằng các loại spinner dừng quay trong khi nó được hiển thị. Bây giờ nó trông giống như nếu tôi tương tác với màn hình, chẳng hạn như cố gắng di chuyển, spinner sẽ tiếp tục quay. Đối với một spinner ProgressBar tiêu chuẩn, tôi có cần phải đặt một số lệnh trên spinner để giữ cho nó quay? Bất kỳ thông tin về điều này sẽ là tuyệt vời.Cách dễ dàng để phát hiện chuỗi ui bị trì hoãn trên Android ở đâu?

Cảm ơn

Trả lời

10

Bạn có thể sử dụng StrictMode để phát hiện các cuộc gọi đắt tiền đang được thực hiện trên Chủ đề giao diện người dùng.

+0

Điều đó thật hoàn hảo, đã cho tôi biết số dòng nơi xảy ra gián đoạn giao diện người dùng. – Bobbake4

+0

Tôi đã có một trường hợp sử dụng đặc biệt cho điều này: Điều này không hoạt động nếu bạn đang sử dụng AsyncTask với .execute và .get. (Bạn không nên làm điều đó, tất nhiên, nhưng StrictMode sẽ không bắt được vấn đề.) –

0

Tại sao bạn không thử triển khai cuộc gọi mạng trong một số AsyncTask? Trong triển khai phương pháp onPostExecute, bạn có thể thực hiện bất kỳ điều gì là cần thiết trên giao diện người dùng (tức là ẩn tiến trình của bạn, v.v.).

Hoặc nếu bạn đang sử dụng compatibility/support library hoặc nhắm mục tiêu Honeycomb trở lên, hãy sử dụng Loader thay thế.

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