2016-01-21 89 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(); 
} 

实际上它看起来像一个样本中的错误。