Android 四大组件学习之Activity六
本节学习Activity的状态保存与恢复。
先用样例開始:
布局文件主要是实现例如以下。大家自行编写
Activity逻辑代码:
public class FiveActivity extends Activity {
private Button setButton;
private Button getButton;
private EditText editText;
private float value;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_five);
setButton = (Button)findViewById(R.id.button1);
getButton = (Button)findViewById(R.id.button2);
editText = (EditText)findViewById(R.id.editText1);
setButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
value = 1.234f;
editText.setText("hello world");
}
});
getButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String string = editText.getText().toString();
Toast.makeText(FiveActivity.this, string+" "+value, 0).show();
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
Log.i("FiveActivity", "onSaveInstanceState");
super.onSaveInstanceState(outState);
}
}
第一种情况:
按setbutton,而且按getbutton
当然了,这时候按backbutton,当再次进入后,会发现输入框里没有内容。同一时候按get得到为0.0
同一时候第一种情况中我的打印Log.i("FiveActivity", "onSaveInstanceState");始终也是没有打印
接着另外一种情况:
当我们set后,再按get后。 这次不按Back键,这次按Home键:
当我们按Home键后。我们的Activity就处于stop状态。这时候我们的打印语句出现了
这时候我们手动杀死FiveActivity
这时候在启动Activity,当再次get时就会发现:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
EditText中的文字Hello World依然存在,而我的Value变量变为0.0了。
总结:
1: 对于第一种情况,Android系统认为是用户自愿的行为,认为那就没有保存的必要了。
2: 对于另外一种情况。EditText中的文字存在那是由于Android系统中差点儿对所以的UI都实现了OnSaveInstanceState方法。这是默认的实现。所以当我们Home出去时就会打印出现,至于我们的变量为啥没有恢复,非常明显那是由于没人保存它的值,这就得须要我们程序猿自己手动保存。
当我们在OnCreate方法中加入:
if(savedInstanceState != null)
value = savedInstanceState.getFloat("1234");
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
Log.i("FiveActivity", "onSaveInstanceState");
outState.putFloat("1234", value);
super.onSaveInstanceState(outState);
}
这种话,当杀死进程后。再次进来我们的数据就会正常的出现。
同一时候。 除系统资源不足时,或者手机的屏幕方向变化时,改变语言时,都会导致Activity重现销毁,然后重现再创建。
这时候假设我们不保存须要保存的数据,也会出现不正确的情况。
Android 四大组件学习之Activity六的更多相关文章
- Android 四大组件学习之Service六
上几节.我们学习怎样用StartServer启动一个服务,用bindServer去绑定一个服务.以及服务的生命周期,以及什么是IntentService. 也许有读者会发现,我们BindServer中 ...
- android四大组件学习总结以及各个组件示例(1)
android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个 ...
- Android 四大组件学习之Server一
上次学习了Android四大组件Activity之后,我们深刻理解了Activity.这次我们学习四大组件Service. Service与Activity的级别是一样的,都是Android系统不可缺 ...
- Android 四大组件学习之BroadcastReceiver一
本节课学习四大组件最后一个, 广播接受者. 顾名思义广播接受者就是接受广播呗.比方在现实社会中,曾经每一个人家都有一台收音机,这可就能够去接受广播发出来的消息.大家都知道.程序世界也是參照的显示生活设 ...
- Android四大组件应用系列——Activity与Service交互实现APK下载
Servic与Activity相比它没有界面,主要是在后台执行一些任务,Service有两种启动方法startService()和bindService(),startService方式Service ...
- Android 四大组件学习之BroadcastReceiver四
本节学习系统中特殊的广播接收者. 我们前面几节不是说了,当广播接受者一旦注冊到系统中,当系统发送的广播和你注冊的广播的action匹配时,系统就会启动广播接收者所在的进程.除非用户手动停止广播接收者所 ...
- android四大组件学习总结以及各个组件示例(2)
上篇博文讲解了activity.content provider,此篇博文来仔细总结service.broadcast receiver: 3. Service >什么是服务?>windo ...
- Android 四大组件学习之ContentProvider四
上节我们学习了怎样去读取系统短信以及插入一条短信到系统中. 本节我们学习怎样获取系统的联系人,以及插入一条联系人 好.废话不多说了,直接操作. 首先和读取短信一样,先找到联系人在数据库中的位置. wa ...
- Android 四大组件学习之BroadcastReceiver三
本节学习广播的分类. 广播分为无序广播和有序广播 无序广播: 广播发送者的action与广播接收者的action都匹配的话,所以广播介绍者都能够收到这条广播,而且没有先后顺序,能够觉得是同一时候收到 ...
随机推荐
- Android开发笔记(4)——MainActivity.java文件修改&布局嵌套
笔记链接:http://www.cnblogs.com/igoslly/p/6805020.html 笔记以开发名为CoffeeOrder的app活动为线索,介绍app如何从功能设计→ ...
- 【PostgreSQL-9.6.3】使用pg_settings表查看参数的生效条件
PostgreSQL数据库的配置参数都在postgresql.conf文件中,此文件的目录为数据库的数据目录($PGDATA).这些参数有些是直接修改就可以生效,有些需要重启数据库才能生效,而有些根本 ...
- sql IIF函数的应用
工作中由于用各种框架,业务也不是很复杂,一直没怎么写过复杂的sql,今天写了一个 数据如下 代码如下 Sub 班级分数等级分析(shname) Dim Con As Object, rs As Obj ...
- jmeter的JDBC Request接口测试
Jmeter操作Mysql 测试计划添加.jar包 mysql-connector-java-5.1.7-bin.jar用于使Jmeter可以读取Mysql: 线程组添加 JDBC Connectio ...
- JQuery 的toggle() 方法如何使用?
JQuery中的toggle()方法,相当于点一个元素时,重复循环两个函数,而这两个函数可以作为toggle()函数的两个参数传进去,当第一次点击的时候会执行前面的参数,而第二次点击时执行的是后面的参 ...
- UVA - 1619 Feel Good(扫描法)
题目: 思路: 预处理出a[i]在哪个范围区间内是最小的,然后直接遍历a数组求答案就可以了. 这个预处理的技巧巧妙的用了之前的处理结果.(大佬tql) 代码: #include <bits/st ...
- [LNOI2014]LCA(树链剖分)
BZOJ传送门 Luogu传送门 题目:给你一棵树,给你n个询问,每个询问要求输出$\sum_{i=l}^{r}depth(LCA(i,z))$ 细看看其实没有想象的那么难 大体思路: 1.对于每个询 ...
- Ztree加载完成后显示勾选节点
①前言:这个在度娘上没有搜到解决的办法,于是自己查看了ztree的API,发现其实还是比较简单的.做个笔记以备不时之需. ②需求: 像下图一样,在加载完成之后就显示需要勾选的项. ③解决方案: 首先页 ...
- pressure coeffcient of a wing/blade
software: CFD POST ANSYS menu bar, select Tools > Macro Calculator. \ correction: Ref pressure is ...
- plot3d
plot3d plot3D a format for structured grid data that was popularized by NASA's CFD visualization Aut ...