学习Activity的一些注意事项
来源:互联网 发布:软壳冲锋衣 知乎 编辑:程序博客网 时间:2024/05/16 18:12
在Android学习中,我们肯定离不开Activity,下面我说一些关于我在Activity学习中的一些事项把!
1、Activity的生命周期
首先是Activity的生命周期,由下面这张图说明:
从图片中我们可以看出Activity的生命周期,首先我们重写一下这些方法,并且在下面我用Log日志打印了一下:
public static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate: "); } @Override protected void onStart() { super.onStart(); Log.i(TAG, "onStart: "); } @Override protected void onResume() { super.onResume(); Log.i(TAG, "onResume: "); } @Override protected void onPause() { super.onPause(); Log.i(TAG, "onPause: "); } @Override protected void onStop() { super.onStop(); Log.i(TAG, "onStop: "); } @Override protected void onRestart() { super.onRestart(); Log.i(TAG, "onRestart: "); } @Override protected void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy: "); }
1、启动Activity的时候,可以看出打印了3个方法,即Activity完成了创建、启动和运行。
2、然后直接进入到主界面或者是切换到另一个应用获得焦点,例如电话打进来,让该应用在后台中继续运行,执行了暂停和停止方法。
3、当我们再次启动Activity时,执行了重启、启动、执行方法,跳过了创建的方法。由此可知,当Activity没有被销毁时,不会从新创建新的Activity。
4、我们销毁Activity,看到依次执行了暂停、停止、销毁方法。
5、当我们重新启动Activity时,会看到这次又执行了创建方法。
2、Activity的启动模式
Activity一共有四种启动模式,分别是:
- standard:标准启动模式,每一次启动该Activity的时候,都会创建一个新的Activity实例,并放入到任务栈中。
- singleTop:只有该任务栈中存在这个Activity实例时,并且该Activity恰巧处于该任务栈的栈顶时,才会调用该Activity实例,否则创建一个新的实例。如果该Activity实例不是处于栈顶,即使任务栈中存在该Activity的实例,也不会被调用,而是重新创建一个新的Activity实例。
- singleTask:一个任务栈中只能存在一个该Activity的实例,如果任务栈中存在Activity的实例,系统会将其调用到栈顶,如果不存在则创建一个新的实例
- singleInstance 在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
3、 onCreate中的savedInstanceState
在我们每次创建一个新的Activity时,首先都会重写一个onCreate方法,那么,其中的参数(Bundle stavedInstanceState)的作用是什么?今天我们进行解答。
当Activity被销毁时,我们有时候需要保存当时的状态,这就是savedInstanceState的作用。一般情况下,在Activity的状态处于暂停时,会调用onSaveInstanceState方法,在其中间使用savedInstanceState保存数据,这样在Activity重新启动时,我们可以根据判断onCreate方法中的参数savedInstanceState是否为空,来确认是否要获取数据。例如:Android游戏开发判断状态、阅读小说时判断阅读的状态。我们都知道Bundle存储数据时和Map集合类似,采用key-value键值对的方式存储。具体代码就不写了,看懂就应该能能够写出来了。
- 学习Activity的一些注意事项
- 学习C++的一些注意事项
- thinkphp5 学习的一些注意事项
- 机器学习的一些注意事项
- 跨进程使用startActivity来调用Activity的一些注意事项
- 关于初学者学习Java的一些注意事项
- 学习设计模式的一些注意事项
- 关于Runtime Permissions的学习以及使用的一些注意事项
- SetWindowPos(...) 的一些注意事项。
- MySQL的一些注意事项
- resin的一些注意事项
- mysql的一些注意事项
- Form 的一些注意事项
- mklink的一些注意事项
- crontab的一些注意事项
- 国际化的一些注意事项
- MapX的一些注意事项
- 指针的一些注意事项
- java基础的核心技术:多线程(一)
- 第三天学习笔记
- 选择排序法,排序数字或者字符串
- 张明明的cartographer 安装方法 测试可用。
- ROS_Kinetic_x 目前已更新的常用機器人資料 rosbridge agvs pioneer_teleop nao TurtleBot
- 学习Activity的一些注意事项
- 字符串转整数(String to Integer (atoi))
- angular利用$location实现搜索功能。
- POJ 3281 网络流
- UIButton / UIControl
- 反射之-反射与泛型 反射实现动态代理
- 数组
- webrtc学习: 部署stun和turn服务器
- 死锁