Android编程之Sdcard相关代码集锦

2019-12-10 19:54:00王振洲

5.关于Android主线程:

android中的主线程是UI线程,它是针对android中的UI组件操作的线程,而android中UI组件操作要求是非线程安全的,

毕竟UI组件的更新操作要求快速响应,如果更新时考虑线程安全,同步锁等待响应之类的,那么UI组件的更新响应就有可能会延迟,

这样话就不符合Android要求尽可能规避的ANR异常。

6.Android4.4系统发布了一个ART运行时,准备用来替换掉之前一直使用的Dalvik虚拟机,希望籍此解决饱受诟病的性能问题。

7. 引用相关:

SoftReference:软引用-->当虚拟机内存不足时,将会回收它指向的对象;需要获取对象时,可以调用get方法。

WeakReference:弱引用-->随时可能会被垃圾回收器回收。

softReference多用作来实现cache机制,weakReference一般用来防止内存泄漏,要保证内存被VM回收 .

8.TCP和UDP

由于面向连接的TCP协议在发生数据丢包时,会要求重传,这会

影响视频的实时性。UDP由于其是面向事务的,且简单不可靠的传输协议,

在传输视频数据当中具有快捷,消耗资源小的特点,简单的传输过程中产生的

丢包和乱序是可以在视频接收端处理的。所以一般采用UDP协议作为多媒体通信的传输层协议。

9.内存相关:

1). 一个进程的内存可以由2个部分组成:java 使用内存 ,C 使用内存 ,

这两个内存的和必须小于16M(16M是怎么来的?算是实验来的吧,每个机型不一样,模拟器不同版本也不一样,可以通过:

Runtime.getMaxMemory() 来查看。),不然就会出现大家熟悉的OOM,这个就是第一种OOM的情况。

2). 更加奇怪的是这个:一旦内存分配给Java后,以后这块内存即使释放后,也只能给Java的使用,这个估计跟java虚拟机里把内存分成好几块进行缓存的原因有关,反正C就别想用到这块的内存了。

10.获取底部虚拟按键高度(针对没有物理按键的手机):

 

 
  1. /**   * 获取底部虚拟按键高度(针对没有物理按键的手机)  
  2. * @return   */ 
  3. private int getNavigationBarHeight() {   int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");  
  4. if (resourceId > 0) {   return getResources().getDimensionPixelSize(resourceId);  
  5. }   return 0;