2013-07-12 80 views
9

我們正在構建一個可以執行大量動畫並下載大量圖像的應用程序。一定量的交易(可預測數)後,應用程序與錯誤而崩潰:A/Looper:無法創建喚醒管道。 errno = 24

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

我們不會在我們的代碼中使用活套,但也有一些庫,我們使用不使用活套:

  1. ActionBarSherlock:我不認爲這是罪魁禍首
  2. Facebook的:我不認爲這是罪魁禍首
  3. nineoldandroid:此動畫庫可能是罪魁禍首
  4. 凌空:這可能不是罪魁禍首
  5. 畢加索:這可能是罪魁禍首

是否有任何的身體經歷了這活套錯誤任何與這些庫,並知道如何解決?

回答

6

問題出在畢加索lib。我們沒有按照預期的方式使用它。我們拿着一本畢加索建築師的副本。

我們通過始終使用

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

您可以詳細說明這一點嗎?我們有同樣的問題,但我們沒有堅持建造者的參考。我們堅持不是由with方法創建的內部單例式的畢加索類實例。 –

+0

全局單例使用構建器來創建它的實例,所以這與使用自己的實例沒有區別。我們已經使用自定義實例將百科全書部署到數百萬臺設備上,而不會看到這個問題。 –

+0

它可能與未調用關機方法有關(這是莫名其妙的,只適用於非默認單例)或者是否有兩個或更多的畢加索實例懸空? –

3

對於我們避免了這個問題,這個問題是一個事實,即我們有畢加索的兩個不同的實例躺在附近。如果您使用構建器創建自定義實例,但確保在應用程序的其他位置未創建其他實例,則不應出現此問題

+0

的確,看起來你應該只有一次實例。也就是說,如果你需要爲你的應用程序提供一個,你應該創建自己的包裝Singleton。這實際上是with()方法在自己的庫中所做的。 公共靜態畢加索(上下文上下文){ 如果(單== NULL){ 同步(Picasso.class){ 如果(單== NULL){ 單=新生成器(上下文).build(); } } } return singleton; } – markshiz

+1

多個實例都很好,並不是這個原因。如果您通過不重複使用創建的實例來創建數千個實例,則可能會發生這種情況。 –