1、当我们正在发短信的时候,已经写了几百字了,这时突然来了一个电话,我们接完电话之后,如果发现辛辛苦苦的几百字不见了,那可就火大了,而实际上这些 内容都是保存了的。在我们接电话的过程中,我们发信息的那个Activity是可能会被系统回收的,这时会调用Activity的 onSaveInstanceState回调方法,而我们就可以在这个方法中保存状态数据,在onCreate方法或者在2.0之后提供的回调方法 onRestoreInstanceState中进行状态数据恢复。
2、当我们在玩游戏的时候,可能又想听歌,然后我们会按home或者back键退出游戏去启动音乐,然后再回到游戏,当我们回到游戏的时候,发现刚刚的状 态还是被保存的。这种情况,我们可以这样保存状态。在onPause方法中保存状态数据,在onResume方法中进行状态恢复。
下面和大家分享一下,这两种情况保存状态的实现代码:
主Activity
package com.zyb.state;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends Activity {
//内容输入框
private EditText content;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
content=(EditText)findViewById(R.id.content);
if(savedInstanceState!=null){
//得到保存的数据
String saveString=savedInstanceState.getString("content");
//恢复数据
content.setText(saveString);
}
}
/**
* 在该方法中保存状态数据
*/
@Override
protected void onPause() {
super.onPause();
//得到要保存的输入框的内容
String saveString=content.getText().toString();
SharedPreferences sp=this.getSharedPreferences("save", Context.MODE_PRIVATE);
//保存输入框的内容
sp.edit().putString("content", saveString).commit();
}
/**
* 在该方法中恢复状态数据
*/
@Override
protected void onResume() {
//得到保存的内容
String saveString=this.getSharedPreferences("save", Context.MODE_PRIVATE).getString("content", null);
//恢复内容
content.setText(saveString);
super.onResume();
}
/**
* 在该方法中保存状态数据
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
//得到要保存的输入框的内容
String saveString=content.getText().toString();
//保存输入框的内容
outState.putString("content", saveString);
super.onSaveInstanceState(outState);
}
}
main.xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
程序运行之后我们在输入框中输入一些内容,然后按back或者home键退出,再次进入程序,上次输入的数据还是保存的。
相关推荐
通过以上步骤,我们可以实现类似网易贴吧的Activity状态保存和恢复,确保用户在离开或设备重启后能无缝地继续之前的操作。这不仅提高了用户体验,也是Android开发中的一项基本技能。在实际项目中,可以根据需求调整...
这就涉及到Activity状态的保存与恢复,确保用户在离开应用后返回时能够看到他们之前的操作状态。本篇将详细讨论如何在Android中测试和管理Activity的状态。 首先,了解Activity的生命周期是至关重要的。当Activity...
接下来通过一个简单的例子进一步理解Activity状态保存的具体实现。假设一个应用包含两个Activity:A和B。用户启动应用后,首先看到的是A界面,然后通过点击按钮跳转到B界面。 1. **启动Activity A**: - 执行顺序...
FragmentActivity在处理多个Fragment的交互、管理以及状态保存方面提供了便利。本篇将深入探讨如何在FragmentActivity中实现Fragment状态的保存,特别是针对ListView滚动位置的保存。 一、Fragment生命周期与状态...
七、Activity状态保存与恢复 Android系统可能会因为内存不足等原因杀死Activity,因此需要在onSaveInstanceState()中保存关键数据,并在onCreate()或onRestoreInstanceState()中恢复,以保证用户体验的连续性。 八...
标题“SavingActivityStates”指的是Android应用开发中的一个关键概念,即如何保存Activity的状态。...总之,理解并正确处理Activity状态保存是Android开发中的重要技能,这能确保用户在不同情况下都能得到一致的体验。
**三、Activity状态保存** 当Activity由于内存不足或用户离开而被销毁时,系统可能会尝试恢复其状态。可以重写`onSaveInstanceState(Bundle outState)`方法来保存临时状态(如UI控件的状态),这些数据会在`onCreate...
`onSaveInstanceState(Bundle outState)` 是Activity生命周期中的一个回调方法,系统在Activity将要被销毁但还未完全销毁时调用此方法,为Activity的状态提供了一个保存数据的机会。开发者可以在这个方法中将重要的...
Activity的生命周期是管理Activity状态的一系列方法,确保在不同情况下能正确地保存和恢复用户的进度。在Activity生命周期中,重建(Recreating an Activity)是一个重要的概念,涉及到Activity因不同原因被销毁...
2. **Activity状态保存**: 当后台Activity由于系统资源紧张被回收时,为了在用户返回时恢复状态,开发者需要在`onSaveInstanceState(Bundle outState)`方法中保存关键数据。这个方法会在`onPause()`之前调用,提供...
3. **Activity状态保存**:当后台Activity被系统回收时,可以通过重写`onSaveInstanceState(Bundle outState)`来保存关键数据,系统会在回收前调用此方法。恢复时,重写`onRestoreInstanceState(Bundle ...
// 将View的状态保存到Bundle中 outState.putString(TEXTVIEW_STATE_KEY, myTextView.getText().toString()); // 调用父类方法,传递保存的Bundle super.onSaveInstanceState(outState); } ``` 当Activity...
此时应停止所有动画或更新UI的操作,并保存状态以防用户返回此`Activity`时需要恢复。 5. **onStop()**:当`Activity`完全不可见时调用。此时`Activity`仍然存在内存中,但用户无法与其交互。 6. **onRestart()**...
3. **Activity状态保存**: - 当后台Activity被系统回收时,可以通过重写`onSaveInstanceState(Bundle outState)`方法来保存当前状态的关键数据。系统在销毁Activity前会调用此方法,将数据存入Bundle中。 - 之后...
6. **Activity状态保存与恢复** 当后台Activity可能被系统回收时,开发者需在onSaveInstanceState()方法中保存关键数据,而在onRestoreInstanceState()或onCreate()中恢复状态。这样即使Activity被回收,再次启动时...
2. **Activity状态保存**:为了在Activity被系统回收前保存状态,开发者通常使用`onSaveInstanceState(Bundle outState)`方法,将关键数据保存到Bundle中。当Activity重新创建时,`onCreate(Bundle ...
6. **Activity状态保存**: 当后台Activity被系统回收时,可以通过重写`onSaveInstanceState(Bundle outState)`来保存状态。在onCreate()方法中,通过`savedInstanceState`参数恢复状态。例如,可以将数据保存到...
【Activity状态保存】 在Android中,当后台的Activity因内存不足被系统回收时,可以通过重写onSaveInstanceState(Bundle outState)方法来保存当前Activity的状态。在这个方法中,开发者可以将需要保留的数据放入...
#### 1.9 Activity状态保存与恢复 - 使用`onSaveInstanceState()`来保存Activity的状态。 - 使用`onRestoreInstanceState()`来恢复Activity的状态。 #### 1.10 Activity怎么和服务绑定 - 可以通过`bindService()`...