2023年Android面试题

发布 2021-12-27 18:39:28 阅读 9395

1. 什么是activity?

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

setcontentview() 要显示的布局

activity 是context的子类,同时实现了和 可以处理与窗体用户交互的事件。

开发常用的的有fragmentactivitiy,listactivity , preferenceactivity ,tabacitivty等…

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

进度对话框的显示与销毁

2. 请描述一下activity 生命周期。

生命周期描述的是一个类从创建(new出来)到死亡(垃圾**)的过程中会执行的方法。

在这个过程中会针对不同的生命阶段会调用不同的方法。

activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的**方法,这些**方法包括:oncreate ondestroy onstop onstart onresume onpause

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

onstart可见与onstop不可见;onresume可编辑(即焦点)与onpause;

这6个方法是相对应的,那么就只剩下一个onrestart方法了,这个方法在什么时候调用呢?

答案就是:在activity被onstop后,但是没有被ondestroy,在再次启动此activity时就调用onrestart(而不再调用oncreate)方法;

如果被ondestroy了,则是调用oncreate方法。

最后讲自己项目中的经验,比如说乐玩每次进入某个界面的时候都要看到最新的数据,这个刷新列表的操作就放在onstart()的方法里面。这样保证每次用户看到的数据都是最新的。

比如:多****, **来**。 onstop() **, **声音设置为0 , 记录****的位置

onstart() 根据保存的状态恢复现场。

在读文档的时候还发现 activity还有两个方法 onpostresume() 和 onpostcreate()这两个生命周期的方法,不过开发的时候没有用到过。

3. 两个activity之间跳转时必然会执行的是哪几个方法。

一般情况比如说有两个activity,分别叫a,b ,当在a里面激活b组件的时候, a 会调用 onpause()方法,然后b 调用oncreate() onstart(),onresume() 这个时候b覆盖了窗体, a会调用onstop()方法。 如果b呢是个透明的,或者是对话框的样式, 就不会调用onstop()方法。

4. 横竖屏切换时候activity的生命周期。

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

1、不设置activity的android:configchanges时,切屏会重新调用各个生命周期。

默认首先销毁当前activity,然后重新加载。

2、设置activity的android:configchanges="orientation|keyboardhidden|screensize"时,切屏不会重新调用各个生命周期,只会执行onconfigurationchanged方法。

游戏开发中, 屏幕的朝向都是写死的。

5. 如何将一个activity设置成窗口的样式。

可以自定义一个activity的样式。

android:theme="@android:style/"

6. 你后台的activity被系统**怎么办?如果后台的activity由于某原因被系统**了,如何在被系统**之前保存当前状态?

除了在栈顶的activity,其他的activity都有可能在内存不足的时候被系统**,一个activity越处于栈底,被**的可能性越大。

protectedvoid ons**einstancestate(bundle outstate) .start();

特殊情况 ,可以在清单文件配置 service 执行所在的进程 ,让service在另外的进程中执行

9. 两个activity之间怎么传递数据?

基本数据类型可以通过。 intent 传递数据

value)

value)

/ 通过intent putextra 方法基本数据类型都传递

key","value");

key","value")

bundle bundle = new bundle();

value);

application 全局里面存放对象 ,自己去实现自己的application的这个类,基础系统的application , 每个activity都可以取到。

让对象实现 implements serializable 接口把对象存放到文件上。

让类实现serializable 接口,然后可以通过 objectoutputstream对象输出流

file file = new file("c:\"

fileoutputstream fos = new fileoutputstream(file);

objectoutputstream oos = new objectoutputstream(fos);

student stu = new student();

从文件中把对象读出来

objectinputstream ois = new objectinputstream(arg0);

student stu1 = student)

文件/网络

//大**的传递。

10. 怎么让在启动一个activity是就启动一个service?

在activity的oncreate()方法里面 startservice();

Android面试题 笔记

一般而言会考考你的j a和c c 方面的知识!j a知识点包括 接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义。c c 知识点包括 指针的移动,排序算法,链表,有时还会有二叉树的遍历或图的遍历。一 activity的生命周期,两个activity之间跳转时必然会执行的...

Android面试题 笔记汇总

学习 好资料。一般而言会考考你的j a和c c 方面的知识!j a知识点包括 接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义。c c 知识点包括 指针的移动,排序算法,链表,有时还会有二叉树的遍历或图的遍历。一 activity的生命周期,两个activity之间跳转...

2019面试题

1 北京市轨道交通在上下班高峰期运力不足,采取高峰浮动票价,你怎么看?答案要点 1 北京市轨道交通的现状。目前北京市地铁上下班高峰期间,站内及车厢内人满为患,过度拥挤,环境很差,且存在较大安全隐患 2 客观评价采取高峰浮动票价政策的现实意义。从政策出台的出发点上而言,该政策可以缓解北京轨道交通的运能...