android面试题2017
2017年,android工程师在面试中会遇到哪些面试问题呢?你做好面试准备了吗?以下是阳光网小编帮你们整理的2017android面试题,一起来学习啦。
2017android面试题篇一
1. 请描述下Activity的声明周期。
onCreate->onStart->onRemuse->onPause->onStop->onRestart->onDestroy
2. 如果后台的Activity由于某种原因被系统回收,如何在回收之前保存当前状态。
onSaveInstanceState().
程序中的某一个Activity A 在运行时,主动或被动的运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又回来找A,这个时候有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被回收的`就直接执行onResume(),跳过onCreate()。
3. 如何将一个Activity设置成窗口样式。
在AndroidManifext.xml中Activity定义处添加
android:theme="@android:style/Theme.Dialog" 或
android:theme="@android:style/Theme.Translucent"。
4. 如何退出Activity?如何安全退出已调用多个Activity的Application?
01.Activity.finish();
也可以用killProcess()和System.exit()这样的方法
2.用ActivityManager的restartPackage方法
5. 请介绍下android大众常用的五种布局。
FrameLayout(框架布局)
只可以有一个控件,并且不能设计这个控件的位置,控件会放在左上角
LinearLayout(线性布局)
一行只能控制一个控件的线性布局,所以当有很多控件需要在一个界面中列出时,可以用LinearLayout布局
AbsoluteLayout(绝对布局)
可以放置多个控件,并且可以自己定义控件的x,y的位置
RelativeLayout(相对布局)
比如要在一行上显示多个控件,这时就要用到相对布局
TableLayout(表格布局)
将子元素的位置分配到行或列中,一个TableLayout由许多的TableRow组成
6. 请介绍下android的数据存储方式。
SharedPreferences方式
用来存储”key-value paires”格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型,可以通过它保存一些上次用户所做的修改操作
文件存储方式
它通过FileInputStream和FileOutputStream对文件进行操作。但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件,如果要共享数据就用Content Providers
SQLite数据库方式
Android提供的一个标准的数据库,支持SQL语句
内容提供器(Content provider)方式
是所有应用程序之间数据存储和检索的桥梁,它的作用是使得各个应用程序之间实现数据共享
网络存储方式
通过网络来存储和获取数据
2017android面试题篇二
1、IntentService有何优点?
答:IntentService 的好处
* Acitivity的进程,当处理Intent的时候,会产生一个对应的Service
* Android的进程处理器现在会尽可能的不kill掉你
* 非常容易使用
2、横竖屏切换时候activity的生命周期?
01、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
02、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
03、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
3. 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?
解答:可以将dictionary.db文件复制到Eclipse Android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到res aw目录中
4. 如何将打开res aw目录中的数据库文件?
解答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的'基本方法是使用getResources().openRawResource方法获得res aw目录中资源的 InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。
5. Android引入广播机制的用意?
答:a:从MVC的角度考虑(应用程序内)
其实回答这个问题的时候还可以这样问,android为什么要有那4大组件,现在的移动开发模型基本上也是照搬的web那一套MVC架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。
b:程序间互通消息(例如在自己的应用程序内监听系统来电)
c:效率上(参考UDP的广播协议在局域网的方便性)
d:设计模式上(反转控制的一种应用,类似监听者模式)
2017android面试题篇三
1、请介绍下ContentProvider是如何实现数据共享的。
Android提供了ContentProvider,一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProviders是以类似数据库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,只不过是采用URI来表示外界需要访问的“数据库”。外部访问通过ContentResolver去访问并操作这些被暴露的数据。
2、如何启用Service,如何停用Service。
Intent intent = new Intent();
intent.setClass(this,cba.class);
startService(intent);
stopService(intent);
3、 请解释下Android程序运行时权限与文件系统权限的区别。
Android程序运行是虚拟机Dalvik( android授权)
文件系统是linux 内核授权
4、系统上安装了多种浏览器,能否指定某浏览器访问指定页面?
Intent intent =newIntent();
intent.setAction("android.intent.action.VIEW");
Uri content_url =Uri.parse(");
intent.setData(content_url);
intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
startActivity(intent);
5、有一个一维整型数组int[] data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
答:像素数组int[]data里就是一个个像素的颜色值,你循环和0xffffffff比较,如果相等,那么就把这个值换成0x88ffffff就行了,这样像素数组里所有的白色不透明(0xffffffff)都变成的`半透明
6、你如何评价Android系统?优缺点。
优点:开源特性,得到众多厂商支持。
软件发展很快。
界面UI,系统优化不错。
缺点:版本过多,升级过快。
用户体验不一致。
7、 android中的动画有哪几类,他们的特点和区别是什么?
两种,
一种是Tween动画(补间动画),
一种是Frame动画(逐帧动画)。
Tween动画:使试图组件移动,放大,缩小以及产生透明度的变化。
Frame动画:传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
【android面试题】相关文章:
android测试面试题11-25
android面试题及答案04-04
android面试题整理04-04
android面试题大全04-04
android面试题练习04-04
总结的android面试题12-09
android软件测试面试题04-04
android面试题库04-04
android常见面试题04-04