Activity如何缓存
来源:互联网 发布:洪恩软件开天辟地 编辑:程序博客网 时间:2024/06/05 11:02
最近,看到一道面试题----Activity如何缓存,随手来记录一下,因为基础不熟有时很尴尬。这个通常是在横竖屏切换时,主要和一些生命周期方法有关,简单写代码验证一下。如下:
MainActivity中的代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println("aaa----1---->>>onCreate "); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); System.out.println("aaa----2---->>>onSaveInstanceState "); } @Override protected void onStart() { super.onStart(); System.out.println("aaa----3---->>>onStart "); } @Override protected void onResume() { super.onResume(); System.out.println("aaa----4---->>>onResume "); } @Override protected void onPause() { super.onPause(); System.out.println("aaa----5---->>>onPause "); } @Override protected void onStop() { super.onStop(); System.out.println("aaa----6---->>>onStop "); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); System.out.println("aaa----7---->>>onRestoreInstanceState "); } @Override protected void onRestart() { super.onRestart(); System.out.println("aaa----8---->>>onRestart "); } @Override protected void onDestroy() { super.onDestroy(); System.out.println("aaa----9---->>>onDestroy "); }}运行结果:
竖屏变横屏时:在onStop之前会调用onSaveInstanceState()保存数据在重建Activity之后,会在onStart()之后调用onRestoreInstanceState(),
并把保存下来的Bundle传给onCreate()和它会默认重建Activity当前的视图,我们可以在onCreate()中,恢复自己的数据。
网上普遍认为, onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据的. 比如用户按下BACK键退出activity时, 用户
显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复的, 也就是onSaveInstanceState()方法不会被调用. 并且由于onSaveInstanceState()方法方法
不一定会被调用, 因此不适合在该方法中保存持久化数据, 例如向数据库中插入记录等.保存持久化数据的操作应该放在onPause()中. onSaveInstanceState()方
法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等.
阅读全文
0 0
- Activity如何缓存
- Activity如何后台运行?不是缓存,是运行。
- 清空Activity缓存
- Activity缓存方法
- Activity缓存方法
- Activity的缓存方法
- Activity数据的缓存
- Activity的缓存方法
- Activity缓存方法--onSaveInstanceState
- Activity的缓存方法
- Activity生命周期、启动模式、缓存
- activity-如何获取当前activity
- HTTP缓存-如何控制缓存
- 如何自定义Activity
- 如何让Activity透明
- 如何让Activity透明
- 如何展现Activity Indicator
- 如何让Activity透明
- libjpeg的ARM linux移植
- Kafka——使用spring进行集成
- CentOS7挂起再打开上不了网问题解决方案
- 新手必备代码片段整理
- codeforces 632C The Smallest String Concatenation 排序
- Activity如何缓存
- 性能数据不稳定因素
- Android工程的目录结构详解
- 猴子吃桃问题——递归算法解答
- 用u盘装系统,进入bios后没有usb启动项怎么办
- Vijos P1335 数独验证【谜题】
- ARM的视频采集以及jpeg压缩
- android binder
- 我的C++课程设计