android面试专题(4)

98 阅读2分钟

1. NDK开发流程?(JNI运行原理)
NDK应用的开发流程(在应用中定义本地接口(native), 编译成.h头文件,交由C程序员实现,将.c实现通过NDK编译成.so动态链接库,导入项目中libs/armeabi,代码中调用该本地接口)
应用场景: 音频,视频解码,拍摄车牌号,识别车牌号

2. 如何实现一键退出?
定义一个类继承Application,定义一个集合存放所有的activity,定义一个添加的方法,再写一个退出的方法,使用for循环全部调用finish方法,然后在每个Activity的onCreate方法中调用自定义类里的添加方法,然后在需要使用一键退出的地方调用类中的退出方法即可。

3. AndroidManifest.xml清单文件标签中属性android:excludeFromRecents=”true” android:screenOrientation=”portrait” android:configChanges=”orientation|locale”的含义?
android:excludeFromRecents表示是否可被显示在最近打开的activity列表里,true表示否,false表示是
android:screenOrientation表示activity显示的模式, 一般用来设置activity横屏显示(horizontal)或竖屏显示(portrait)
android:configChanges=[oneormoreof:”mcc”“mnc”“locale”“touchscreen”“keyboard”“keyboardHidden”“navigation”“orientation”“fontScale”]是当所指定属性(Configuration Changes)发生改变时,通知程序调用 onConfigurationChanged()函数,比如orientation屏幕方向发生改变,locale语言环境发生改变时

4. 如何将一个Activity设置成窗口的样式
在清单文件AndroidManifest.xml中相应的标签内设置属性

android:theme=”@android:style/Theme.Dialog

Activity的Dialog显示

5. 谈谈UI中, Padding和Margin有什么区别,gravity与layout_gravity的区别
Padding 用来指定组件内的内容距离组件边界的距离;
Margin用来指定控件与控件之间的距离
Gravity用来指定组件内的内容相对于组件本身的位置
Layout_gravity用来指定组件相对于其父组件的位置

6. Android SDK 3.0(HoneyComb)及4.0(Ice Cream)新特性
新版SDK发布的同时也发布了一个扩展包android-support-v4,把部分特性单独的抽出来,使低版本的SDK也可以使用这些特性,主要支持以下特性:
Fragment: 3.0引入,碎片管理,可以局部刷新UI,它设计的功能和Activity一样强大,包括生命周期、导航等,Fragment的每次导航都可以记录下来用于返回。
ViewPager: 提供了多界面切换的新效果
GridLayout: 4.0引入, 网格布局, android第六大布局

7. 哪个组件可以实现手风琴效果,用来实现设置界面的类,实现抽屉效果, 悬浮窗口?
实现手风琴效果(ExpandableListView)
设置界面的类(preferenceActivity)保存到sharedpreference中
抽屉效果(slidingDrawer)组件
悬浮窗口: PopWindow,可以实现类似Dialog和菜单的效果