Android系统知识全览(2)---四大组件之Activity
什么是Activity
是一种可以包含用户界面的组件,主要用于与用户进行交互。
创建和使用
创建class继承AppCompatActivity即可,随后在配置文件AndroidManifest.xml
注册上即可。
其他的细节不再赘述,都是基本操作。包括创建布局文件,注册为启动Activity等等。
使用Intent进行Activity跳转
如果要从一个Activity跳转到另一个Activity,需要使用Intent。
Intent是什么
Intent是Android程序中各组件之间交换的一种方式,用于执行当前组件的动作意图,同时可以携带数据。根据指明的动作是否具体,可分为隐式intent和显式Intent。
组件Content Provider本身就是一种通信机制,不需要通过Intent
Intent使用方式
极其简单,实现Activity跳转
显式
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
隐式
Intent intent = new Intent();
//设置动作(实际action属性就是一个字符串标记而已)
intent.setAction("com.example.smyh006intent01.MY_ACTION"); //方法:Intent android.content.Intent.setAction(String action)
startActivity(intent);
值得注意的是,隐士启动可能匹配多个组件,会列举出来供用户选择。
除了action还有category,同时匹配才可生效。
Activity生命周期
Activity使用任务栈管理,称为返回栈。后进先出,后面的叠加在上面。
Activity的四个状态:
运行状态,处于栈顶
暂停状态,不处于栈顶但可见
停止状态,不处于栈顶不可见
销毁状态,已经从栈内移除
Activity生命周期
七个回调方法覆盖Activity生命周期:
经典图片

1.onCreate()
这个方法在每一个Activity类都会有,当我们新建一个Activity类时,一定会重写父类的onCreate方法,onCreate方法会在Activity第一次被创建时调用。我们应该在这个方法中完成Activity的初始化操作,比如说加载布局,初始化布局控件,绑定按钮事件等。
2.onStart()
这个方法在Activity由不可见变为可见时调用。
3.onResume()
这个方法在Activity准备好喝用户交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态。
4.onPause()
这个方法在系统准备去启动或者恢复另一个Activity的时候调用。
5.onStop()
这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的activity,那么,onPause()方法会得到执行,而onStop()方法并不会执行。
6.onDestory()
这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。
7.onRestart()
这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。
三种生存期:
完整生存期: onCreate--->onDestory 这两组对应是否存在
可见生存期: onStart-->onStop 这两组是对应是否可见
前台生存期: onResume-->onPause 这两组是对应是否可交互
一些场景下的生命周期
进程的优先级以及被回收的处理
Activity的启动模式
相关面试题
1.Intent携带数据有上限吗?如果超过上限如何处理。
有,1MB之内(1024KB),intent传输容量在1MB之内。
超过上限:
方法一:将需要传递的数据写在临时文件或者数据库中,再跳转到另外一个组件的时候再去读取这些数据信息,这种处理方式会由于读写文件较为耗时导致程序运行效率较低;
方法二:将需要传递的数据信息封装在一个静态的类中(注意当前组件和要跳转到的组件必须属于同一个进程,因为进程之间才能够共享数据),在当前组件中为类设置内容,然后再跳转到的组件中去取,这种处理方式效率很高,但是会破坏程序的独立性。