android 面试题(一)

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接口

android 面试题(一)

上一篇:MySQL 重置密码


下一篇:[es数据同步到数据库]数据库数据倒入es(一)