• UID8522
  • 登录2016-02-24
  • 粉丝0
  • 关注0
  • 发帖2
  • 主页
  • 金币29枚
qq_hPgWZM014563 发布于2016-02-24 18:19
10/18993

2016年最全的Android面试考题+答案 精编版

楼层直达

Android 基础(2016.01.20更新)(★★)

 

一、 Activity

1、什么是Activity? 

四大组件之一,一般的,一个用户交互界面对应一个activity

setContentView() ,// 要显示的布局 

button.setOnclickLinstener{

}, activity 是Context的子类,同时实现了window.callback和keyevent.callback, 可以处理与窗体用户交互的事件. 

我开发常用的的有FragmentActivitiyListActivity  ,PreferenceActivity ,TabAcitivty等…

 

2、请描述一下Activity 生命周期

Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:onCreate onStart onResume onPause onStop onDestroy

其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;

onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;

如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity. 

进度对话框的显示与销毁 

 

3、常见的Activity类型有FragmentActivitiy,ListActivity,TabAcitivty等。请描述一下Activity 生命周期

Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:onCreate onStart onResume onPause onStop onDestroy

其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;

onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause。

 

4、如何保存Activity的状态?

Activity的状态通常情况下系统会自动保存的,只有当我们需要保存额外的数据时才需要使用到这样的功能。

一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留。

但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了。如果之后这个activity重新回到前台, 之前所作的改变就会消失。为了避免此种情况的发生, 我们可以覆写onSaveInstanceState()方法。onSaveInstanceState()方法接受一个Bundle类型的参数, 开发者可以将状态数据存储到这个Bundle对象中, 这样即使activity被系统摧毁, 当用户重新启动这个activity而调用它的onCreate()方法时, 上述的Bundle对象会作为实参传递给onCreate()方法, 开发者可以从Bundle对象中取出保存的数据, 然后利用这些数据将activity恢复到被摧毁之前的状态。

需要注意的是, onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据的. 比如用户按下BACK键退出activity时, 用户显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复的, 也就是onSaveInstanceState()方法不会被调用. 如果调用onSaveInstanceState()方法, 调用将发生在onPause()或onStop()方法之前。

5、两个Activity之间跳转时必然会执行的是哪几个方法?

一般情况下比如说有两个activity,分别叫A,B,当在A里面激活B组件的时候, A会调用 onPause()方法,然后B调用onCreate() ,onStart(), onResume()。

 这个时候B覆盖了窗体, A会调用onStop()方法.  如果B是个透明的,或者是对话框的样式, 就不会调用A的onStop()方法。

 

6、横竖屏切换时Activity的生命周期

此时的生命周期跟清单文件里的配置有关系。

  1. 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期默认首先销毁当前activity,然后重新加载。

2.设置Activity android:configChanges="orientation|keyboardHidden|screenSize"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。

通常在游戏开发, 屏幕的朝向都是写死的。

 

7、如何将一个Activity设置成窗口的样式

只需要给我们的Activity配置如下属性即可。

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

 

8、如何退出Activity?如何安全退出已调用多个Activity的Application?

1、通常情况用户退出一个Activity只需按返回键,我们写代码想退出activity直接调用finish()方法就行。

2、记录打开的Activity:

每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。

3、发送特定广播:

在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。

//给某个activity 注册接受接受广播的意图 

registerReceiver(receiver, filter)

//如果过接受到的是 关闭activity的广播  就调用finish()方法 把当前的activity finish()掉 

4、递归退出

在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。

5、其实 也可以通过 intent的flag 来实现intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)激活一个新的activity。此时如果该任务栈中已经有该Activity,那么系统会把这个Activity上面的所有Activity干掉。其实相当于给Activity配置的启动模式为SingleTop。

 

9、Activity的四种启动模式,singletop和singletask区别是什么?一般书签的使用模式是singletop,那为什么不使用singletask?

singleTop 跟standard 模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的activity(应该可以理解为用户眼前所 看到的activity)时,程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例。拿上面的例子来说,当Act1 为 singleTop 模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。

singleTask模式和singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多activity开发中,常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应的activity声明为singleTask 模式,这种问题将不复存在。在主页的Activity很常用

 

10、Android中的Context, Activity,Appliction有什么区别?

相同:Activity和Application都是Context的子类。

Context从字面上理解就是上下文的意思,在实际应用中它也确实是起到了管理上下文环境中各个参数和变量的总用,方便我们可以简单的访问到各种资源。

    不同:维护的生命周期不同。 Context维护的是当前的Activity的生命周期,Application维护的是整个项目的生命周期。

使用context的时候,小心内存泄露,防止内存泄露,注意一下几个方面:

 1. 不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的。

 2. 对于生命周期长的对象,可以使用application,context。

 3. 避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。

 

11、两个Activity之间传递数据,除了intent,广播接收者,content provider还有啥?

1)利用static静态数据,public static成员变量

2)利用外部存储的传输,

例如 File 文件存储   

     SharedPreferences首选项   

     Sqlite 数据库

 

12、Context是什么?

   1、它描述的是一个应用程序环境的信息,即上下文。

    2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(ContextIml)。

    3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent,信息,等。

 

 

上面只有前面几页,整个文档有的压缩版有2.33 MB,需要的朋友可以通过网盘下载!

2016年最全的Android面试考题——链接: http://pan.baidu.com/s/1qX4G20c  密码:exwh

 


0人打赏
  • UID6982
  • 登录2016-02-24
  • 粉丝0
  • 关注0
  • 发帖1
  • 主页
  • 金币13枚
qq_8IWHgZF14555 发布于2016-02-24 18:30
沙发F
太全了,感觉还不错啊,面试应该没有多大问题咯
  • UID815
  • 登录2016-02-25
  • 粉丝0
  • 关注0
  • 发帖6
  • 主页
  • 金币1枚
Initialization. 发布于2016-02-25 09:07
板凳F
不错 很好  收藏了。。
  • UID1690
  • 登录2017-02-15
  • 粉丝1
  • 关注6
  • 发帖101
  • 主页
  • 金币185枚
社区居民
原创写手
lalalala 发布于2016-02-25 09:13
地板F
赞一个。感谢楼主...赞一个。感谢楼主...
。。(●—●)。。我是萌萌哒的签名挡。。(●—●)。。游戏源码分享(●—●)(●—●)
  • UID4401
  • 登录2016-03-08
  • 粉丝1
  • 关注0
  • 发帖30
  • 主页
  • 金币44枚
社区居民
guò澐yǔ 发布于2016-02-25 18:50
4楼F
东西不错 谢谢分享
  • UID9076
  • 登录2016-11-28
  • 粉丝0
  • 关注2
  • 发帖54
  • 主页http://blog.sina.com.cn/androidworker
  • 金币255枚
社区居民
boilingcola 发布于2016-04-15 10:00
5楼F
概括的很全,可以的。
One shot.Not bad,huh?
  • UID11295
  • 登录2016-04-28
  • 粉丝0
  • 关注0
  • 发帖3
  • 主页
  • 金币19枚
itplays 发布于2016-04-27 10:05
6楼F
感谢  学习了
  • UID11800
  • 登录2016-05-12
  • 粉丝0
  • 关注0
  • 发帖1
  • 主页
  • 金币13枚
你们 发布于2016-05-12 10:22
7楼F
very very very very 3Q
  • UID7461
  • 登录2016-06-08
  • 粉丝1
  • 关注0
  • 发帖211
  • 主页
  • 金币191枚
社区居民
忠实会员
android_chao 发布于2016-05-12 16:51
8楼F
非常不错,收藏了。
  • UID2462
  • 登录2016-09-27
  • 粉丝0
  • 关注0
  • 发帖1
  • 主页
  • 金币23枚
社区居民
超哥 发布于2016-09-27 15:19
9楼F
网盘打不开了
  • UID14076
  • 登录2016-10-11
  • 粉丝0
  • 关注0
  • 发帖1
  • 主页
  • 金币11枚
sina_Xne3x14761 发布于2016-10-11 17:16
10楼F
知道这些根本找不到工作,找份实习工作差不多,太肤浅
您需要登录后才可以回帖
发表回复
极贡献
技术问答
专题荟萃
程序人生
视觉设计
Android开发
iOS开发
编程语言
前端开发
后端开发
服务器架构
软件测试
运维方案
创业路上



最热文章墙

  • 79139/378   【精品推荐】200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^

  • 45194/191   情人节福利,程序员表白的正确姿势:改几行代码就变成自己的表白了

  • 44907/0   Python爬虫:常用浏览器的useragent

  • 41328/260   【精品推荐】Android版产品级的音乐播放器源码,功能太强大了,最好的产品原型有木有?

  • 38618/145   省时省力的Android组件群来了,非常棒的原型参考

  • 29981/142   2016抢红包软件及源码

  • 29261/2   超全!整理常用的iOS第三方资源

  • 29250/71   原创表白APP,以程序员的姿势备战新年后的7夕,持续完善中!

  • 24270/160   Android版类似UC浏览器:非常赞,产品级的源码

  • 22849/30   麻省理工的一帮疯子,真的实现了随意操控万物!(绝对黑科技)

  • 22542/25   Android工程师面试题大全

  • 22450/27   2016程序员跳槽全攻略

  • 21935/9   GitHub上排名前50的iOS项目:总有一款你用得着

  • 20888/20   码魂:程序员的牛B漫画

  • 19014/85   Android小而全的博客源码:非常适合全面掌握开发技巧

  • 19009/73   【持续更新中】Android福利贴(二):资料源码大放送

  • 18993/10   2016年最全的Android面试考题+答案 精编版

  • 18867/42   一个绚丽的loading动效分析与实现!

  • 18734/3   吐槽那些程序员的搞笑牛逼注释

  • 17609/1   iOS 动画总结

  • 17601/45   惊艳的App引导页:背景图片切换加各个页面动画效果

  • 17453/82   仿京东商城客户端Android最新版,不错的原型和学习资料

  • 17414/104   Android带弹幕的视频播放器源码,来自大名鼎鼎的Bilibili弹幕网站

  • 17121/23   个人收集的Android 各类功能源代码

  • 16650/5   新一代Android渠道打包工具:1000个渠道包只需要5秒

  • 16586/21   Android福利第三波【Android电子书】

  • 16401/53   基于瀑布流的美女图片浏览App,有注释的源代码

  • 16386/10   女程序员的梦,众网友的神回复

  • 16358/81   【精品推荐】类似360安全卫士安Android源码:非常赞的产品原型

  • 16322/17   用JavaScript 来开发iOS和Android 原生应用:React Native开源框架中文版来啦

  • 16238/0   iOS中文版资源库,非常全

  • 16081/11   年会上现场review代码是怎么样的体验!

  • 16021/23   珍藏多年的素材,灵感搜寻网站

  • 15489/18   65条最常用正则表达式,你要的都在这里了

  • 14833/15   基于Android支付宝支付设计和开发方案

  • 14228/11   有木有这样一张酷图帮你集齐所有git命令超实用

  • 14163/17   什么是真正的黑客:收获12200+Stars,人气远超微软开源VS

  • 13926/46   在线音乐播放器完整版(商用级的源码):非常赞,可听免费高品质专辑

  • 13704/0   GitHub iOS 库和框架Top100 

  • 13626/61   【技巧一】搭配Android Studio,如何实现App远程真机debug?

  • 13549/7   用程序员的姿势抢过年的火车票

  • 13507/7   一张图搞定iOS学习路线,非常全面

  • 13119/10   成为Java顶尖程序员 ,看这11本书就够了

  • 13086/10   微信支付终于成功了(安卓,iOS),在此分享

  • 12983/18   一张图搞定Android学习路线,非常全面

  • 12792/29   【持续更新中】Android福利贴(一):资料源码

  • 12710/3   基于Node.js的强大爬虫,能直接发布抓取的文章哦

  • 12454/4   46 个非常有用的 PHP 代码片段

  • 11992/3   即时通信第三方库

  • 11431/8   流媒体视频直播方案

  • 11360/18   八个最优秀的Android Studio插件

  • 11238/9   B站建开源工作组:APP想支持炫酷弹幕的看过来

  • 11032/9   烧了5亿美金,这家神秘的公司即将颠覆人类未来!

  • 10994/2   【精品推荐】高质量PHP代码的50个实用技巧:非常值得收藏

  • 10928/10   中国黑客的隐秘江湖:攻守对立,顶尖高手月入千万美元

  • 10207/6   开箱即用!Android四款系统架构工具

  • 10010/10   十大技巧快速提升Android应用开发性能

  • 9951/3   10款GitHub上最火爆的国产开源项目——可以媲美西半球

  • 9897/1   Android性能优化视频,文档以及工具

  • 9760/3   一张图看清Linux 内核运行原理

  • 返回顶部