Android 基础都没学好就去面试,这不是挖坑给自己跳吗?字节跳动三面凉凉经
onStop()//Activity 不再可见时调用。onDestroy()//Activity 销毁栈时被调用的最后一个方法。3. 横竖屏切换时候 Activity 的生命周期。
答:1、不设置 Activity 的 android: configChanges 时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。2、设置 Activity 的 android: configChanges=“orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。3、设置 Activity 的 android: configChanges=“orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行 onConfiguration 方法
4. 如何将一个 Activity 设置成窗口的样式。
答:第一种方法,在 styles.xml 文件中,可以新建如下的类似 Dialog 的 style。<style name=“Theme.FloatActivity” parent=“android:style/Theme.Dialog”> </style>。第二种方法,在 AndroidManifest.xml 中在需要显示为窗口的 Activity 中添加如下属性: android: theme=“@style/Theme.FloatActivity”即可。也可以直接添加对应需要展示为 Dialog style 的 Activity 的 android: theme 属性为 android: theme=“@ android: style/Theme.Dialog”。
5. 两个 Activity 之间怎么传递数据?
答: 可以在 Intent 对象中利用 Extra 来传递存储数据。在 Intent 的对象请求中,使用 putExtra(“键值对的名字”,”键值对的值”);在另外一个 Activity 中将 Intent 中的请求数据取出来:Intent intent = getIntent();String value = intent.getStringExtra(“testIntent”);
**6. 怎么让在启动一个 Act
ivity 是就启动一个 service?**
答: 首先定义好一个 service,然后在 Activity 的 onCreate 里面进行连接并 bindservice 或者直接 startService。
7. Activity 怎么和 service 绑定,怎么在 activity 中启动自己对应的 service?
答:①activity 能进行绑定得益于 Serviece 的接口。为了支持 Service 的绑定,实现 onBind 方法。②Service 和 Activity 的连接可以用 ServiceConnection 来实现。需要实现一个新的 ServiceConnection,重现 onServiceConnected 和 OnServiceDisconnected 方法,一旦连接建立,就能得到 Service 实例的引用。③执行绑定,调用 bindService 方法,传入一个选择了要绑定的 Service 的 Intent(显示或隐式)和一个你实现了的 ServiceConnection 的实例
8.什么是 Service 以及描述下它的生命周期。Service 有哪些启动方法,有什么区别,怎样停用 Service?
答: Android Service 是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序进程的上下文里。需要通过某一个 Activity 或者 Context 对象来调用。Service 有两个启动方法,分别是 Context.startService()和 Context.bindService()。如果在 Service 执行耗时的操作需要启动一个新线程来执行。
Android Service 只继承了 onCreate(), onStart(),onDestroy()三个方法,当我们第一次启动 Service 时,先后调用 onCreate(), onStart()这两个方法,当停止 Service 时,则执行 onDestroy()方法时。如果 Service 已经启动了,当我们再次启动 Service 时,不会再执行 onCreate()方法,而是直接执行 onStart()方法。
9. 什么时候使用 Service?
答: 比如播放多媒体的时候,用户启动了其他 Activity,这个时候程序要在后台继续播放,比如检测 SD 卡上文件的变化,再或者在后台记录你的地理信息位置的改变等等。
10. 请描述一下 Intent 和 Intent Filter。
答: Intent 在 Android 中被翻译为”意图”,他是三种应用程序基本组件-Activity,Service 和 broadcast receiver 之间相互激活的手段。在调用 Intent 名称时使用 ComponentName 也就是类的全名时为显示调用。这种方式一般用于应用程序的内部调用,因为你不一定会知道别人写的类的全名。而 Intent Filter 是指意图过滤,不出现在代码中,而是出现在 android Manifest 文件中,以的形式。(有一个例外是 broadcast receiver 的 intent
filter 是使用 Context.registerReceiver()来动态设定的,其中 intent filter 也是在代码中创建的)
一个 intent 有 action,data,category 等字段。一个隐式 intent 为了能够被某个 intent filter 接收,必须通过 3 个测试,一个 intent 为了被某个组件接收,则必须通过它所有的 intent filter 中的一个。
**其他基础面试题,可以查看我的【[GitHub](
)】都是近年大厂面试真题!**
###如何打好基础
Android 的入门还是很容易的,但是后续的难度会比前期难很多,所以前期学习过程中一定要打牢基础。
以下是学习路线:
####1、Java 基础
虽然现阶段 Google 已经将 Kotlin 定为官方推荐语言,但是大多数国内项目都是用 Java 开发。即使以后的大趋势是向 Kotlin 转换,也需要一些时间,所以完全不用担心 Java 会过时,你可以在 Android 学的差不多的时候再去学 Kotlin,学习成本也会很低。
如果非科班出身建议看视频或者找人指导学习,科班出身可以直接看 Java 相关书籍,基础好的可以一边了解 Android 一边学习 Java。
对于 Java 需要掌握到什么程度:- Java 基本数据类型、基本语法、关键字、表达式和分支循环- 面向对象,封装、多态和继承- 接口的使用方法和场景- Java 常用的各类型集合的优缺点及使用场景- JavaI/O- Java 的多线程- Java 的反射机制和泛型- 一些常用的设计模式(如:单例、工厂等)
掌握了以上 Java 知识基本可以应对很多开发场景。
####2、Android(软硬件部分)
开发平台:电脑用 Windows 的或者 Mac 都可以,处理器最好 i5 及以上,8G 内存及以上,配上固态硬盘。(推荐 Mac)
开发工具:Eclipse 已经很少见到,大多数开发人员都选择 AndroidStudio(IntelliJ IDEA 也可以,跟 AS 类似),调试可以用 AS 自带的模拟器或者第三方模拟器,有条件的请用真机。
开发环境:配好 Java 环境,正常安装 AndroidStudio 即可。
####3、Android(基础编程部分)
了解项目工程各个目录的作用
学习各类基本布局的使用方法
了解基本控件的使用(如:TextView、ImageView 等)
Activity 和 Fragment 的生命周期,数据交互方法
列表类控件(如:RecylerView、ListView 等)和 Adapter 的使用方法
Activity 的启动模式,四大基本组件的作用及使用场景
####4、Android(进阶编程部分)
数据库的简单存储(增删改查)
Android 自带的 SharePreferences 存储
文件存储的方法
Android 的消息机制和异步任务
评论