2016-12-01 21 views
7

Tôi nhận được các nhật ký lỗi sau trên một số điện thoại như sau:Android: ANR Nhập văn bản đã hết thời gian

Lý do: Nhập văn bản hết thời gian chờ đợi do cửa sổ chạm chưa xử lý xong Các sự kiện đầu vào đã được gửi đến nó hơn 500.0ms trước. Chờ đợi thời lượng hàng đợi: 20. Đợi hàng chờ đợi: 5509.1ms.)

Tôi đang sử dụng Retrofit 2 cho các cuộc gọi mạng mà tôi sử dụng phương pháp async, Sử dụng cơ sở dữ liệu làm lĩnh vực nơi tôi đã sử dụng giao dịch không đồng bộ để viết nội dung. Sử dụng Glide để tải hình ảnh.

Khi sử dụng Chế độ nghiêm ngặt, tôi phát hiện ra tôi nhận được nhật ký hình phạt cho các tùy chọn được chia sẻ không có gì khác. Bất kỳ con trỏ nào khác để xem và gỡ lỗi sự cố

Trả lời

2

Bất kỳ loại thủ tục tốn kém nào thời gian như đồng bộ hóa dữ liệu qua mạng đều không được thực hiện trong main thread. Android có một số phương thức tích hợp mặc định như AsyncTask, IntentService v.v. trên các phương thức worker thread. Cá nhân tôi không có ý tưởng tốt về Retrofit 2. Nếu nó hoạt động trên main thread, trường hợp đó bạn nên sử dụng nó trong một chủ đề riêng biệt.

+1

theo tài liệu trang bị thêm 2 phương pháp enqueue hoạt động không đồng bộ. – Sutirth

+0

@Sutirth: bạn có thể giải quyết vấn đề này không? – j10

+2

@jitenshah Có tôi đã có thể giải quyết nó. Trên thực tế tôi đã làm hoạt động db của tôi bằng văn bản về chủ đề chính được nặng di chuyển nó vào công việc async nó làm việc như một say mê. Sử dụng lĩnh vực như cơ sở dữ liệu trong android – Sutirth

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