1、Android中真实宽高,getWidth和getMeasuredWidth的区别:哪个计算的是真实的宽?

getWidth():得到的是View在父Layout中布局好后的宽度值,如果没有父布局,那么默认的父布局就是整个屏幕。

getMeasuredWidth():得到的是最近一次调用measure()方法测量后得到的是View的宽度,它仅仅用在测量和Layout的计算中。所以此方法得到的是View的内容占据的实际宽度。

总结:

getWidth(): View在设定好布局后整个View的宽度。
getMeasuredWidth(): 对View上的内容进行测量后得到的View内容占据的宽度,前提是你必须在父布局的onLayout()方法或者此View的onDraw()方法里调用measure(0,0);否则你得到的结果和getWidth()得到的结果是一样的。

2、堆区、栈区、方法区有什么区别?静态变量存储在哪个区?

堆区:

1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)

2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身。

栈区:

1.每个线程包含一个栈区,栈中只保存基本数据类型的对象和自定义对象的引用(不是对象),对象都放在堆区中。

2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)

方法区:

1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

静态变量属于类的属性,存储在方法区。方法区保存一个类的模板,堆存放类的实例。栈用来函数计算

Intent传值的类型有哪些?

1) 8种基本数据类型及其数组
2)String(String实现了Serializable)/CharSequence实例类型的数据及其数组
3) 实现了Parcelable的对象及其数组( 操作较复杂, 但速度快)。android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

4)实现了Serializable的对象及其数组(操作简单, 但速度慢)。Serializable:将 Java 对象序列化为二进制文件的 Java 序列化技术,是Java系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable接口,使用ObjectInputStream 和 ObjectOutputStream 进行对象的读写。

5)File在Java里也是类,在Android里也实现了Serializable接口

java 内部类为什么不能用静态方法?

非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。

  1. static类型的属性和方法,在类加载的时候就会存在于内存中。
  2. 要使用某个类的static属性或者方法,那么这个类必须要加载到jvm中。 
    基于以上两点,可以看出,如果一个非static的内部类如果具有static的属性或者方法,那么就会出现一种情况:内部类未加载,但是却试图在内存中创建static的属性和方法,这当然是错误的。原因:类还不存在,但却希望操作它的属性和方法。

为什么内部类可以访问外部类的成员?

1 内部类对象的创建依赖于外部类对象;

2 内部类对象持有指向外部类对象的引用。

ListView的优化方案

答:1、如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用。在这个方法中尽可能少创建view。

2、给contentView设置tag(setTag()),传入一个viewHolder对象,用于缓存要显示的数据,可以达到图像数据异步加载的效果。

3、如果listview需要显示的item很多,就要考虑分页加载。比如一共要显示100条或者更多的时候,我们可以考虑先加载20条,等用户拉到列表底部的时候再去加载接下来的20条。

最新文章

  1. 软件工程(C编码实践篇)学习心得
  2. 微信小程序入门正确姿势(一)
  3. div中iframe高度自适应问题
  4. 对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引。
  5. Scrum 项目1.0
  6. webapi返回json格式,并定义日期解析格式
  7. 01---Net基础加强
  8. LINQ 简单用法【1】
  9. Redis中的发布与订阅
  10. javaScript笔记1
  11. Java并发编程之volatile变量
  12. 介绍 32 位和 64 位版本的 Microsoft Office 2010
  13. JDBC 基础
  14. JavaScript数据类型检测 数组(Array)检测方式
  15. Config安全控制
  16. 走进Java中的持有对象(容器类)之一 容器分类
  17. ES6优缺点
  18. 小技巧-mac修改finder菜单栏
  19. [漏洞案例]thinkcmf 2.x从sql注入到getshell实战
  20. ES6知识整理(8)--Promise对象

热门文章

  1. BZOJ1500[NOI2005]维修数列——非旋转treap
  2. 51Nod 2006 飞行员配对(二分图最大匹配)
  3. 架构师成长之路6.2 DNS配置文件
  4. luogu3646 巴厘岛的雕塑 (dp)
  5. Redis中的简单动态字符串
  6. 那些神奇的before和after使用方法
  7. zookeeper安装和使用(Windows环境)
  8. 编写前程贷投标loadrunner脚本及总结
  9. nginx 耗时原因定位总结
  10. Nginx插件之openresty反向代理和日志滚动配置案例