2021Android核心基础面试题解析

1、四大组件是什么?

1)Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个Activity 通常是一个单独的屏幕,Activity 通过 Intent 来进行通信。Android 中会维持一个Activity Stack,当一个新 Activity 创建时,它就会放到栈顶,这个 Activity 就处于运行状态。

2)Service:服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。

3)ContentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过 ContentResolver 类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver 接口的 notifyChange 函数通知那些注册监控特定 URI 的 ContentObserver 对象。

如果 ContentProvider 和调用者在同一进程中,ContentProvider 的方法(query/insert/update/delete 等)和调用者在同一线程中;

如果ContentProvider 和调用者不在
同一进程,ContentProvider 方法会运行在它自身进程的一个 Binder 线程中。

4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。

2、四大组件的生命周期和简单用法

1)Activity:

onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()

  • onCreate():为 Activity 设置布局,此时界面还不可见;

  • onStart(): Activity 可见但还不能与用户交互,不能获得焦点

  • onRestart():重新启动 Activity 时被回调

  • onResume(): Activity 可见且可与用户进行交互

onPause(): 当前 Activity 暂停,不可与用户交互,但还可见。在新

Activity 启动前被系统调

用保存现有的 Activity 中的持久数据、停止动画等。

  • onStop(): 当 Activity 被新的 Activity 覆盖不可见时被系统调用

  • onDestory(): 当 Activity 被系统销毁杀掉或是由于内存不足时调用

2)Service

a) onBind 方式绑定的:
onCreate->onBind->onUnBind->onDestory(不管调用 bindService 几次,onCreate 只会调用一次,onStart 不会被调用。
建立连接后,service 会一直运行,直到调用 unBindService 或是之前调用的 bindService 的 Context 不存在了,系统会自动停止Service,对应的 onDestory 会被调用)

b) startService 启动的:
onCreate->onStartCommand->onDestory(start 多次,onCreate 只会被调用一次,onStart 会调用多次,该 service 会在后台运行,直至被调用 stopService 或是stopSelf)

c) 又被启动又被绑定的服务
不管如何调用 onCreate()只被调用一次,startService 调用多少次,onStart 就会被调用多少次,而 unbindService 不会停止服务,必须调用 stopService或是 stopSelf 来停止服务。

必须 unbindService 和 stopService(stopSelf)同时都调用了才会停
止服务。

3)BroadcastReceiver

a) 动态注册:存活周期是在 Context.registerReceiver 和 Context.unregisterReceiver 之间,BroadcastReceiver 每次收到广播都是使用注册传入的对象处理的。

**b) 静态注册:进程在的情况下,receiver 会正常收到广播,调用 onReceive 方法;生命周期只存活在 onReceive 函数中,此方法结束,BroadcastReceiver 就销毁了。onReceive()只有十几秒存活时间,在 onReceive()内操作超过 10S,就会报 ANR。

进程不存在的情况,广播相应的进程会被拉,Application.onCreate 会被调用,再调用onReceive。

<
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值