第二章 先从看得到的入手 探究活动——总结
来源:互联网 发布:神龙契约披风数据 编辑:程序博客网 时间:2024/06/06 15:35
1. 活动被回收时解决
返回栈中的Activity在系统内存不够时,有可能会被系统回收,这时再点击返回栈也会回到Activity中,但是这是重新启动了这个Activity,我们之前在这个Activity中输入的数据全部消失,这会使用户体验下降
解决方案:
使用onSaveInstanceState()回调方法,这个方法会保证一定在活动呗回收之前调用,因此我们可以通过这个方法来解决活动被回收是临时数据得不到保存的问题
具体实现:
在Activity中重写OnSaveInstanceState()方法
protectedvoid OnSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
outstate.putString(“data_key”,”content”);
}
在onCreate()方法中使用
if(savedInstanceState!= null){
String tempData =savedInstanceState.getString(“data_key”);
}
//这里进行数据的一系列操作
2. 活动的启动模式
1) standard(默认模式)
系统不在乎返回栈中是否存在这个活动,每次启动活动都会创建一个该活动的实例。
2) singleTop
在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例
3) singleTask
每次启动活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并且把在这个活动之上所用活动统统出栈,如果没有发现就会创建一个新的活动实例
4) singleInstance
在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用同一个返回栈,也就解决了共享活动实例的问题
3. 启动活动的最佳写法
在实际项目开发中经常会有对接的问题出现,如:SecondActivity不是由你开发的,但现在你负责的部分需要启动SecondActivity这个功能,而你却不清楚启动这个活动需要传递那些数据
最佳解决方案:
在SecondActivity中写一个静态的方法actionStart()
public static void actionStart(Contextcontext, String data1, String data2){
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra(“param1”, data1);
intent.putExtar(“param2”,data2);
context.startActivity(intent);
}
好处:
1) 最重要的一点是一目了然,SecondActivity所需要的数据全部都在方法参数中体现出来了
2) 简化了启动活动的代码,只需要一行代码就可以启动SecondActivity:
SecondActivity.actionStart(FirstActivity.this,“data1”, “data2”);
- 第二章 先从看得到的入手 探究活动——总结
- 第二章 先从看得到的入手-探究活动
- 第二行代码学习笔记——第二章:先从看得到的入手——探究活动
- 第二行代码学习笔记——第二章:先从看得到的入手——探究活动
- 《第一行代码》笔记——第2章 先从看得到的入手—探究活动
- 第2章 先从看得到的入手,探究活动
- 第2章 先从看得到的入手-探究活动
- 第二章 先从看到的入手探究活动
- 阅读郭林《第一行代码》的笔记——第2章 先从看得到的入手,探究活动
- (笔记)第二章 :先从看到的入手-探究活动
- 想学习编程却又不知从何入手?那么先看所有语言的比较
- 第二章 探究活动(Activity)
- 第一行代码学习笔记-第二章 探究活动-1.活动的基本用法
- 第一行代码学习笔记-第二章 探究活动-3.活动的生命周期
- 第一行代码学习笔记-第二章 探究活动-4.活动的启动模式
- 第一行代码学习笔记-第二章 探究活动-5. 活动的最佳实现
- 第一行代码学习笔记-第二章 探究活动-2.Intent的使用
- 从资本运作入手看本次Dell对EMC的收购
- error: #20: identifier "EXTI0_IRQChannel" is undefined
- Extjs基础入门视频教程
- 右下角的弹窗
- pthread_join函数、pthread_create函数及linux线程
- LASSO
- 第二章 先从看得到的入手 探究活动——总结
- #include<stm32f10x_lib.h>和#include<stm32f10x.h>有什么不同
- 在python中处理HDF5文件中的link
- op自举 正反馈
- UIImageView和UIImage,CGContextRef
- 编译器条件编译宏
- 自定义Toast
- 无序数组的二分查找
- 安卓 利用Fragment添加自定义标题栏