美文网首页Android开发经验谈Android技术知识Android开发
爆肝整理!Android最常见大厂面试题+解析(一)

爆肝整理!Android最常见大厂面试题+解析(一)

作者: 小陈不爱敲代码 | 来源:发表于2020-04-23 17:16 被阅读0次

    前言:

    给大伙整了一些常见面试题,说的比较细致,请耐心看完,对大伙还是很有帮助的。废话还是不多说,直接上干货!

    image

    1.Fragment为什么被称为第五大组件?

    答:Fragment比Activity更节省内存,其切换模式也更加舒适,使用频率不低于四大组件,且有自己的生命周期,并且必须依付于Activity

    2.Activity创建Fragment的方式是什么?

    静态创建具体步骤
    首先我们同样需要注册一个xml文件,然后创建与之对应的java文件,通过onCreatView()的返回方法进行关联,最后我们需要在Activity中进行配置相关参数即在Activity的xml文件中放上fragment的位置。
    动态创建具体步骤
    (1)创建待添加的碎片实例
    (2)获取FragmentManager,在活动中可以直接通过调用 getSupportFragmentManager()方法得到。
    (3)开启一个事务,通过调用beginTransaction()方法开启。
    (4)向容器内添加或替换碎片,一般使用repalce()方法实现,需要传入容器的id和待添加的碎片实例。
    (5)提交事务,调用commit()方法来完成。

    3.FragmentPageAdapter和FragmentPageStateAdapter的区别

    答:FragmnetPageAdapter在每次切换页面时,只是将Fragment进行分离,适合页面较少的Fragment使用以保存一些内存,对系统内存不会多大影响
    FragmentPageStateAdapter在每次切换页面的时候,是将Fragment进行回收,适合页面较多的Fragment使用,这样就不会消耗更多的内存

    4. 请描述一下Activity 生命周期。

    答: 共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。
    onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问。
    onStart(): Activity变为在屏幕上对用户可见时调用。
    onResume(): Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用。
    onPause(): Activity被暂停或收回cpu和其他资源时调用,该方法用户保护活动状态的,也是保护现场。
    onStop(): Activity被停止并转为不可见阶段及后续的生命周期事件时调用。
    onRestart(): Activity被重新启动时调用。该活动仍然在栈中,而不是启动新的Activity。
    1、完整生命周期: 即从一个Activity从出现到消失,对应的周期方法是从onCreate()到onDestroy()。
    2、可见生命周期: 当Activity处于可以用户看见的状态,但不一定能与用户交互时,将多次执行从onStart()到onStop()。
    3、前景生命周期: 当Activity处于Activity栈最顶端,能够与其他用户进行交互时,将多次执行从onResume()到onPause()。

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

    答: 两个Activity之间跳转必然会执行的是下面几个方法。
    onCreate()//在Activity生命周期开始时调用。
    onRestoreInstanceState()//用来恢复UI状态。
    onRestart()//当Activity重新启动时调用。
    onStart()//当Activity对用户即将可见时调用。
    onResume()//当Activity与用户交互时,绘制界面。
    onSaveInstanceState()//即将移出栈顶保留UI状态时调用。
    onPause()//暂停当前活动Activity,提交持久数据的改变,停止动画或其他占用GPU资源的东西,由于下一个Activity在这个方法返回之前不会resume,所以这个方法的代码执行要快。
    onStop()//Activity不再可见时调用。
    onDestroy()//Activity销毁栈时被调用的最后一个方法。

    6. 横竖屏切换时候Activity的生命周期。

    答:
    1、不设置Activity的android: configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
    2、设置Activity的android: configChanges=“orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
    3、设置Activity的android: configChanges=“orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfiguration方法

    7. 如何将一个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”。

    8.两个Activity之间怎么传递数据?

    答: 可以在Intent对象中利用Extra来传递存储数据。
    在Intent的对象请求中,使用putExtra(“键值对的名字”,”键值对的值”);在另外一个Activity中将Intent中的请求数据取出来:
    Intent intent = getIntent();
    String value = intent.getStringExtra(“testIntent”);

    9. 怎么让在启动一个Activity是就启动一个service?

    答: 首先定义好一个service,然后在Activity的onCreate里面进行连接并bindservice或者直接startService。

    10. Activity怎么和service绑定,怎么在activity中启动自己对应的service?

    答:
    1、activity能进行绑定得益于Serviece的接口。为了支持Service的绑定,实现onBind方法。
    2、Service和Activity的连接可以用ServiceConnection来实现。需要实现一个新的ServiceConnection,重现onServiceConnected和OnServiceDisconnected方法,一旦连接建立,就能得到Service实例的引用。
    3、执行绑定,调用bindService方法,传入一个选择了要绑定的Service的Intent(显示或隐式)和一个你实现了的ServiceConnection的实例

    关注我,持续更新Android系统化得知识干货,你们的支持是我最大的动力。

    image

    相关文章

      网友评论

        本文标题:爆肝整理!Android最常见大厂面试题+解析(一)

        本文链接:https://www.haomeiwen.com/subject/qlwaihtx.html