Android基础相关面试问题(一)

1、Activity四种状态:

  1. active:Activity处于栈顶、可见、可与用户交互
  2. paused:可见但不可交互、内存足够,状态保存,内存不足可被系统回收
  3. stopped:不可见、内存足够,状态保存,内存不足可被系统回收
  4. killed:被系统回收

总结:

  1. Activity是Android系统与用户交互的接口
  2. Android系统是通过Activity栈的形式来管理Activity

2、Activity 生命周期分析:(正常情况)

Activity启动

->onCreate()做初始化操作例如:setContentView设置布局资源、数据的加载、图片预加载等

->onStart()处于用户可见状态,但不能与用户进行交互

->onResume()处于前台界面,可以与用户进行交互

->onPause() Activity正在停止、被部分覆盖

->onStop() Activity被完全覆盖、不可见

->onRestart() Activity正在重新启动

->onDestory() Activity正在被销毁、回收、释放资源

3、异常情况下Activity生命周期

系统自动调用

onSaveInstanceState():保存当前Activity信息

onRestoreInstanceState():恢复保存的数据,Bindle参数不为空,onCreate()方法中需要对Bindle参数进行非空判断

总结:

Activity正常启动:onCreate---->onStart----->onResume

点击back键回退:onPause----->onStop----->onDestory

打开新的Activity:onPause---->onStop

Activity异常:onSaveInstanceState保存数据

Activity重新创建:onRestoreInstanceState 恢复数据

 

4、Activity之间通信

◆ Intent/Bindle(key/value形式):intent.putExtras(bindle)

◆ 类静态变量

◆ 全局变量

 

5、Activity与Fragment通信

◆ Activity将数据传递给Fragment

  1. Bindle:例:fragment.setArgument(bindle);

   目标fragment中调用getArgument获取bindle对象

  1. 直接在Activity中定义方法

 

◆ Fragment将数据传递给Activity (接口回调)

 

  1. 在fragment中定义一个内部回调接口
  2. Fragment的方法onAttach()
  3. 调用onDetach方法,这个时候要把传递过来的activity对象释放掉,避免内存泄露

 

6、Activity与Service数据通信

◆ 1、绑定服务,利用ServiceConnection类

      实现ServiceConnection接口,重新方法

      onServiceConnected() : 绑定成功时

      onServiceDisconnected() : 进程崩溃时

◆ 2、简单通信,利用Intent进行传值

        只能传递简单类型数据,性能上没有优势

◆ 3、定义一个callback接口来监听服务中的进程的变化

 

7、Activity启动模式

◆ 1、Standard 默认情况启动模式

         每次都会创建一个新的activity实例

◆ 2、singleTop 栈顶复用模式

        当activity处于栈顶时不会创建activity,若不在栈顶则会重新创建Activity

        应用场景:1、IM对话框 2、新闻客户端推送

◆ 3、singleTask 栈内复用模式

      当任务栈中存在则将activity置于栈顶,并将这个activity以上的所有activity销毁(即clearTop)

  1. 会根据taskAffinity去寻找当前是否存在一个对应名字的任务栈
  2. 如果不存在,则创建一个新的task
  3. 如果存在,则在该任务栈中查找是否存在该Activity实例

     应用场景:应用主界面

◆ 4、singleInstance 该模式下的activity在整个系统中有且只有一个实例,并且独享一个任务栈,即该任务栈中只有一个Activity

   应用场景:呼叫来电

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值