Android 面试题(持续更新)

1.四大组件是什么及其作用?

1.四大组件:Activity、Service、broadcast receiver、content provider
2.作用:

  • Activity
    一个Activity通常是一个单独的屏幕,Activity之间通过Intent来传值,每个Activity都需要在配置文件中声明,否则系统将不识别也不执行该Activity。
  • Service
    即服务,用户在后台完成用户指定的操作,service没有界面,但是能与其他组件进行交互,service也是需要在配置文件中使用标签 进行声明。service的启动方式有两种:
    第一:startService(启动):使用这种方式启动的service会走onCreate()→onStartCommand()→service running→onDestroy()生命周期,当服务启动后,服务的生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动它的组件被销毁了,因此,要是停止该服务,需要在服务中调用stopself()方法或者让其他组件调用stopService()方法。
    第二:bindService(绑定):使用这种方式启动服务,服务会走onCreate()→onBind()→service running→onUnBind()→onDestroy()生命周期,当服务与组件绑定后,服务的生命周期便跟随组件的生命周期,一旦调用者退出,服务也就随之终止。
  • broadcast receiver
    即广播,广播是一种广泛运用在应用程序之间传输信息的机制,而广播接收器是对发送出来的广播进行过滤接收并响应的一类组件,广播接收器没有用户界面,广播接收器的注册方式有两种,分别是程序动态注册和配置文件中进行静态注册,动态注册的广播接收器的特点是当用来注册的Activity关掉后,广播接收器也就失效了,所以动态注册广播一般是用来在某个特定时候接收特定广播的。静态注册则无需担心广播是否被关闭。
  • content provider
    即内容提供者,是Android提供的第三方应用数据访问方案,内容提供者用于保存和获取数据,并使其对所有的应用程序开放,这是不同应用程序之间共享数据的唯一方式。

2.Activity的生命周期

在这里插入图片描述

- 详细解读每个方法的调用场景:

  • onCreate():当创建启动时调用
  • onStart():当Activity处于可见状态时调用
  • onResume()
    调用场景:
  • 当Activity第一次启动时,onCreate()—>onStart()—>onResume()
  • 当前Activity被挡住一部分后(处于onPause状态),重新回到当前Activity时调用,例如弹窗消失
     onPause()
    调用场景:
    当第二个Activity启动时且不完全挡住MainActivity时调用,例如弹窗,被遮挡的Activity就处于onPause()状态,此时点击后退键,MainActivity重新回到当前Activity时,就会调用onResume()
  • onStop()
    调用场景:
    当第二个Activity启动且完全挡住第一个Activity时调用,或者按HOME键回到主屏;
    此时如果按返回键退出第二个Activity,就会调用onRestart(),即onRestart()是当Activity从onStop()重新回到当前Activity时调用。
  • onDestory()
    当MainActivity退出时调用(点击返回键)
    调用finish()

- Activity整个生命周期完全解读:

  • 启动Activity
    系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity
    进入运行状态
  • 当前Activity被其他Activity覆盖一部分或被锁屏,系统会调用onPause方法,暂停当前Activity的执行
  • 当前Activity由被覆盖(一部分)状态回到前台时或被解锁屏,系统会调用OnResume方法,再次进入运行状态
  • 当前Activity跳转到新的Activity或者按Home键回到主屏的时候,系统会先调用onStop方法,然后调用onStop方法,进入停滞状态
  • 用户后退到此Activity
    系统会调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态
  • 当前Activity处于被覆盖状态或者后台不可见状态,当更高优先级的APP需要内存,系统内存不足,系统会杀死当前的Activity
  • 用户退回到当前Activity 再次调用onCreate方法,onStart方法,onResume方法,进入运行状态
  • 用户退出当前Activity
    系统会先调用onPause方法,然后调用onStop方法,最后调用onDestory,结束当前Activity

3.ListView的优化方法

  1. 使用ViewHolder模式来提高效率,这样可以避免每次在调用getView的时候都去进行findViewById的实例化数据操作。
  2. 异步加载,不要在getView中进行耗时操作,耗时操作放在异步线程里,如果在adapter中的某些操作需要耗费大量的时间,这个时候就要用到异步线程来进行异步加载数据,比如加载图片。
  3. ListView滑动时停止加载和分页加载
  4. 使用RecyclerView代替ListView

4.为什么要用RecyclerView来替代ListView

猜你喜欢

转载自blog.csdn.net/qq_41545435/article/details/84972924