我目前在Nexus 4上运行Android 4.4.4,并且在4.4.4的Nexus 7上也看到了这个问题。
我有一个围绕Service子类示例代码构建的应用程序:
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的限制并被杀死。
我一直在广泛搜索,并找到了其他一些可能引用同一问题的人,但未找到解决方案的任何内容。
有什么想法吗?
谢谢!
答案 0 :(得分:1)
尝试在Looper
内退出处理程序onDestroy()
。
@Override
public void onDestroy() {
mServiceLooper.quit();
Toast.makeText(getApplicationContext(), "service done", Toast.LENGTH_SHORT).show();
}
实际上它看起来像样本中的错误。