Android开发常见异常与错误系列(二)

文章转载至:http://blog.csdn.net/u011153817/article/details/51098732


接上篇文章:Android开发常见异常与错误系列(一)

六、Too many open files异常

运行在Linux系统上的Java程序可能会出现”Too many open files”的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景。

程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访问file的name、location、access authority等相关信息,这样的一个实体被称为file entry。“open files table”(图中橙色标识)存储这些file entry,以数组的形式线性管理。文件描述符(file descriptor)作为进程到open files table的指针,也就是open files table的下标索引,将每个进程与它所访问的文件关联起来了。

每个进程中都有一个file descriptor table管理当前进程所访问(open or create)的所有文件,文件描述符关联着open files table中文件的file entry。细节不表,对于open files table能容纳多少file entry。Linux系统配置open files table的文件限制,如果超过配置值,就会拒绝其它文件操作的请求,并抛出Too many open files异常。这种限制有系统级和用户级之分。

系统级:

系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制

1  cat /proc/sys/fs/file-max

2  sysctl -a 查看结果中fs.file-max这项的配置数量

如果需要增加配置数量就修改/etc/sysctl.conf文件,配置fs.file-max属性,如果属性不存在就添加。

配置完成后使用sysctl -p来通知系统启用这项配置

用户级:

Linux限制每个登录用户的可连接文件数。可通过  ulimit -n来查看当前有效设置。如果想修改这个值就使用 ulimit -n 命令。

对于文件描述符增加的比例,资料推荐是以2的幂次为参考。如当前文件描述符数量是1024,可增加到2048,如果不够,可设置到4096,依此类推。

在出现Too many open files问题后,首先得找出主要原因。最大的可能是打开的文件或是socket没有正常关闭。为了定位问题是否由Java进程引起,通过Java进程号查看当前进程占用文件描述符情况:

Java代码

lsof -pjavapid每个文件描述符的具体属性lsof−pjava_pid | wc -l 当前Java进程file descriptor table中FD的总量

分析命令的结果,可判断问题是否由非正常释放资源所引起。

七、Android更新apk时,报“已安装了存在签名冲突的同名数据包”错误

这也是刚开始从事android开发时遇到的问题。贴出来纪念一下

今天 在更新apk时,在安装到最后一步的时候,它突然报“已安装了存在签名冲突的同名数据包”;

开始以为是我签名有问题,所以就围绕着这个keystore就瞎折腾了一上午,后面,突然发现,其实我的签名是正确的,不存在任何问题。

原因如下:

因为我自己手机上的所有版本都是在eclipse上直接运行的,没有问题后,再放到服务器上的,

而eclipse它有自己默认的签名:debug.keystore,

但是我放到服务器上的apk的签名则是自己定义的,**.keystore,

因此,当我要从服务器上把最新版本更新到我手机上由eclipse安装的旧版本时,由于两者的签名不同,所以就会报“已安装了存在签名冲突的同名数据包”的错误。

八、ListView 焦点冲突问题

这个如果理解了View的事件派发,就很容易了,无奈当时是小白呀,一穷二白的,

一句话,如果点击没反应,肯定事件被派发下去了,即子控件去处理了。解决办法:

1、可以自定义ListView,重写onTouch方法,使其返回return false,即事件不派发,由自己处理。

2、不自定义ListView的话,可以让item布局中的子控件不具有焦点。即onFocus = false

未完待续!!!!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,174评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,577评论 18 399
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,386评论 2 33
  • 一、下载H3 orangepi lite的android源码资源-“android sdk source code...
    积木同学阅读 6,591评论 0 1
  • 恋爱六年 结婚八年 我们走过了两个“七年之痒” 平稳而又平淡 我们曾经用文字传递的爱情 足有十个笔记本的厚度 当初...
    LuckyCZ阅读 1,711评论 0 0

友情链接更多精彩内容