2016-01-21 86 views
1

我目前在Nexus 4上運行Android 4.4.4,並且在4.4.4上的Nexus 7上也看到過這個問題。Android服務示例代碼泄漏文件描述符

我已經圍繞服務子類的示例代碼生成的應用程序在這裏找到:

http://developer.android.com/guide/components/services.html

我使用HelloService的。由於打開了太多文件,導致崩潰,我逐漸將代碼剝離,直到我現在只有項目中的示例代碼(attached)。每次服務啓動和停止時,它仍會泄漏3個文件描述符。

每次啓動和停止時,lsof的增加了3行是這樣的:

com.cousi 11633  u0_a82 69  ???    ???  ???  ??? pipe:[193985] 
com.cousi 11633  u0_a82 70  ???    ???  ???  ??? pipe:[193985] 
com.cousi 11633  u0_a82 71  ???    ???  ???  ??? anon_inode:[eventpoll] 

我的實際應用程序創建和停止服務足夠頻繁一段時間後,它擊中的1024極限,被殺害。

我一直在廣泛搜索,發現一些其他人可能引用相同的問題,但沒有找到任何解決方案。

有什麼想法?

謝謝!

回答

1

嘗試退出您的處理程序的Looper裏面onDestroy()

@Override 
public void onDestroy() { 
    mServiceLooper.quit(); 
    Toast.makeText(getApplicationContext(), "service done", Toast.LENGTH_SHORT).show(); 
} 

實際上它看起來像一個樣本中的錯誤。