Android 2.2 API Demos -- PersistentState(Activity)
来源:互联网 发布:工业数据采集卡 编辑:程序博客网 时间:2024/05/17 10:40
首先看API Demo中的示例,PersistentState Activity。
1. 在PersistentState Activity运行窗口的第一个文本框中追加输入"It will be saved.",在第二个文本框中输入"It will be lost."并且光标选择"be saved."。
2. 点击back按钮或者以其它方式退出这个界面。
3. 当再次进入这个界面时发现,在第一个文本框中添加的文字和对文字的选择没有改变,而第二个文本框中新输入的文字消失了。
从上面的示例可以看出当我们离开这个Activity之后,有些信息被保存了。当我们回到这个Activity时,被保存的信息能再次加载进来。
从代码中可以看出,
Java代码
package com.example.android.apis.app;import com.example.android.apis.R;import android.app.Activity;import android.content.SharedPreferences;import android.os.Bundle;import android.widget.EditText;import android.widget.TextView;public class PersistentState extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // Be sure to call the super class. super.onCreate(savedInstanceState); setContentView(R.layout.save_restore_state); // Set message to be appropriate for this screen. ((TextView)findViewById(R.id.msg)).setText(R.string.persistent_msg); // Retrieve the EditText widget whose state we will save. mSaved = (EditText)findViewById(R.id.saved); } @Override protected void onResume() { super.onResume(); SharedPreferences prefs = getPreferences(0); String restoredText = prefs.getString("text", null); if (restoredText != null) { mSaved.setText(restoredText, TextView.BufferType.EDITABLE); int selectionStart = prefs.getInt("selection-start", -1); int selectionEnd = prefs.getInt("selection-end", -1); if (selectionStart != -1 && selectionEnd != -1) { mSaved.setSelection(selectionStart, selectionEnd); } } } @Override protected void onPause() { super.onPause(); SharedPreferences.Editor editor = getPreferences(0).edit(); editor.putString("text", mSaved.getText().toString()); editor.putInt("selection-start", mSaved.getSelectionStart()); editor.putInt("selection-end", mSaved.getSelectionEnd()); editor.commit(); } private EditText mSaved;}
当我们点击back按钮离开PersistentState Activity时,触发了onPause()方法,在onPause()方法里我们对第一个文本框的状态(其中的文本和对文本的选择)进行了保存。
当我们再次进入这个Activity时,触发了onResume()方法,在onResume()里我们将保存的信息重新加载到第一个文本框中。
通过onPause和onResume方法,我们可以对Activity的状态改变进行相应,执行一定的操作。其实,Android中Activity的状态改变不止create,pause和resume,相应的方法也不止onCreate,onPause和onResume。
在Android系统中,Activity是通过activity stack来管理的。当一个新的activity被创建,它就被置于栈顶并处于running状态。
Activity有四种状态:
1.处于屏幕最前端的Activity(栈顶)为active或者running状态;
2.失去了焦点但是可见的Activity为paused状态,例如被透明或者非全屏Activity遮盖;
3.被完全掩盖的Activity为stopped状态;
4.当Activity处于paused或者stopped状态时由于系统需要内存被杀死或者执行了finish()方法的Activity将处于destroyed状态。
参考Activity的生命周期图,
相关方法描述如下:
onStop()onStop()Called when the activity is no longer visible to the user, because another activity has been resumed and is covering this one. This may happen either because a new activity is being started, an existing one is being brought in front of this one, or this one is being destroyed.Followed by either onRestart() if this activity is coming back to interact with the user, or onDestroy() if this activity is going away.YesonRestart() or
onDestroy()onDestroy()The final call you receive before your activity is destroyed. This can happen either because the activity is finishing (someone called finish() on it, or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenarios with the isFinishing() method.Yesnothing
- Android 2.2 API Demos -- PersistentState(Activity)
- Android 2.2 API Demos -- 通过调用子Activity返回值
- Android API Demos学习 - Activity部分
- Android 2.2 API demos --- animation
- Android 2.2 API demos -- Dialog
- Android 2.2 API Demos -- ListActivity
- Android 2.2 API Demos -- Service
- Android 2.2 API Demos -- Redirection, Reorder Activity and Save&Restore State
- Android Sample Code之API Demos (Activity一): Hello World
- Android Sample Code之API Demos (Activity五): 背景透明
- Android 2.2 API demos -- ApiDemos.java
- Android 2.2 API demos -- theme & style
- Android 2.2 API Demos -- Intents Chooser
- android Api Demos
- Android API Demos笔记
- Android的API Demos
- Android的API Demos
- android API Demos 路径
- chrome不兼容position:fixed 对联广告JS 不用JS做对联广告效果 CSS实现对联广告效果
- link2sd或者app2sd前的分区——SD卡分区教程 link2sd教程 app2sd教程
- Websphere问题的点滴收集
- Message 'You cannot use the EurekaLog package in other packages'.
- Oracle时间函数(转)
- Android 2.2 API Demos -- PersistentState(Activity)
- 线程结束资源释放
- JUnit学习链接地址
- 单链表的反转实现(C++)
- mtk平台开发环境搭建——记录(20120216)
- 求字符串全排列
- VB总结(二)
- 使用IO内存控制硬件点亮LED灯
- 关于send recv