我目前在 Nexus 4 上运行 Android 4.4.4,并且在 4.4.4 上的 Nexus 7 上也看到了这个问题。
我有一个围绕此处找到的服务子类示例代码构建的应用程序:
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 的限制并被终止。
我进行了广泛的搜索,发现其他一些人可能也提到了同样的问题,但没有找到任何解决方案。
有什么想法吗?
谢谢!
最佳答案
尝试在 onDestroy()
中退出处理程序的 Looper
。
@Override
public void onDestroy() {
mServiceLooper.quit();
Toast.makeText(getApplicationContext(), "service done", Toast.LENGTH_SHORT).show();
}
实际上它看起来像是样本中的错误。
关于Android 服务示例代码泄漏文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34935742/