2013-07-12 33 views
9

Chúng tôi đang xây dựng một ứng dụng thực hiện rất nhiều hoạt ảnh và tải xuống rất nhiều hình ảnh. Sau một số tiền nhất định của các giao dịch (một số dự đoán), các ứng dụng được đâm với lỗi:A/Looper: Không thể tạo đường ống. errno = 24

A/Looper: Could not create wake pipe. errno=24 

Chúng tôi không sử dụng Looper trong mã của chúng tôi, nhưng một vài trong số các thư viện chúng tôi sử dụng tôi sử dụng Looper:

  1. ActionBarSherlock: tôi không nghĩ rằng đây là thủ phạm
  2. facebook: tôi không nghĩ rằng đây là thủ phạm
  3. nineoldandroid: thư viện hình ảnh động này có thể là thủ phạm
  4. volley: Đây có lẽ không phải là thủ phạm
  5. Picasso: Đây có thể là thủ phạm

Có bất kỳ cơ thể trải qua lỗi Looper này với bất kỳ các libs và biết làm thế nào để khắc phục?

Trả lời

6

Sự cố nằm trong lib Picasso. Chúng tôi đã không sử dụng nó trong thời trang dự định. Chúng tôi đang giữ một bản sao của người dựng Picasso.

Chúng tôi tránh được vấn đề này bằng cách luôn sử dụng

Picasso.with(Context).load(Url).into(ImageView) 
+0

Bạn có thể giải thích thêm về điều này một chút không? Chúng tôi có cùng một vấn đề nhưng chúng tôi không giữ một tham chiếu của người xây dựng. Chúng tôi giữ một thể hiện của lớp Picasso không phải là singleton nội bộ được tạo bởi phương thức with. –

+0

Singleton toàn cầu sử dụng trình tạo để tạo ra cá thể của nó, vì vậy điều này không khác gì so với việc sử dụng cá thể của riêng bạn. Chúng tôi đã triển khai Picasso cho hàng triệu thiết bị bằng cách sử dụng một cá thể tùy chỉnh mà không thấy vấn đề này. –

+0

Có thể liên quan đến việc không gọi phương thức tắt máy (không thể giải thích được, chỉ khả dụng trên singleton không mặc định) hoặc nếu có hai hoặc nhiều trường hợp Picasso treo xung quanh? –

3

Đối với chúng tôi, vấn đề là thực tế là chúng tôi đã có hai trường hợp khác nhau của Picasso nằm xung quanh. Nếu bạn sử dụng trình tạo để tạo một cá thể tùy chỉnh nhưng đảm bảo không có cá thể nào khác được tạo ở nơi khác trong ứng dụng của bạn, thì vấn đề này sẽ không xuất hiện

+0

Thật vậy, nó xuất hiện như thể bạn chỉ nên có một ví dụ. Đó là, nếu bạn cần phải có một cho ứng dụng của bạn, bạn nên tạo riêng của bạn Singleton wrapper. Đây thực tế là phương thức with() làm gì trong thư viện riêng của chúng. public static Picasso với (bối cảnh Context) { if (singleton == null) { đồng bộ (Picasso.class) { if (singleton == null) { singleton = Builder mới (context) .build(); } } } trả lại singleton; } – markshiz

+1

Nhiều trường hợp là tốt và không phải là nguyên nhân của việc này. Nếu bạn đang tạo hàng nghìn trường hợp bằng cách không sử dụng lại các trường hợp đã tạo, điều này có thể sẽ xảy ra. –

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