Android开发Android开发经验谈Android技术知识

Activity面试汇总, 打牢那些被易忘的基础知识

2018-10-30  本文已影响64人  Android高级架构探索

1、什么是 Activity?

四大组件之一,是用户交互的界面。一般的来说一个用户交互界面对应一个activity。
activity 是 Context 的子类,同时实现了 window.callback 和 keyevent.callback, 可以处理与窗体 用户交互的事件.

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

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

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

其实这些方法都是两两对应的:
1.onCreate 创建与 onDestroy 销毁;
2.onStart 可见与 onStop 不可见;
3.onResume 可编辑(即焦点)与 onPause;
4.如果界面有共同的特点或者功能的时候,还会自己定义一个 BaseActivity.进度对话框的显示与销毁
如果界面有共同的特点或者功能的时候,还会自己定义一个 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()方法之前。
有兴趣的加入Android工程师交流Q群:752016839 主要针对Android开发人员提升自己,突破瓶颈,相信你来学习,会有提升和收获。


image.png

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 设置成窗口的样式

image.png

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

lists.remove(this);

3、发送特定广播:

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

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

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

12、Context 是什么?

上一篇 下一篇

猜你喜欢

热点阅读