`
zhengdl126
  • 浏览: 2539213 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Activity状态保存

 
阅读更多

  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键退出,再次进入程序,上次输入的数据还是保存的。

分享到:
评论

相关推荐

    android activity状态保存

    通过以上步骤,我们可以实现类似网易贴吧的Activity状态保存和恢复,确保用户在离开或设备重启后能无缝地继续之前的操作。这不仅提高了用户体验,也是Android开发中的一项基本技能。在实际项目中,可以根据需求调整...

    测试Activity状态保存和恢复

    这就涉及到Activity状态的保存与恢复,确保用户在离开应用后返回时能够看到他们之前的操作状态。本篇将详细讨论如何在Android中测试和管理Activity的状态。 首先,了解Activity的生命周期是至关重要的。当Activity...

    Android状态保存

    接下来通过一个简单的例子进一步理解Activity状态保存的具体实现。假设一个应用包含两个Activity:A和B。用户启动应用后,首先看到的是A界面,然后通过点击按钮跳转到B界面。 1. **启动Activity A**: - 执行顺序...

    android FragmentActivity 保存fargment状态

    FragmentActivity在处理多个Fragment的交互、管理以及状态保存方面提供了便利。本篇将深入探讨如何在FragmentActivity中实现Fragment状态的保存,特别是针对ListView滚动位置的保存。 一、Fragment生命周期与状态...

    Android深入理解Activity!

    七、Activity状态保存与恢复 Android系统可能会因为内存不足等原因杀死Activity,因此需要在onSaveInstanceState()中保存关键数据,并在onCreate()或onRestoreInstanceState()中恢复,以保证用户体验的连续性。 八...

    SavingActivityStates

    标题“SavingActivityStates”指的是Android应用开发中的一个关键概念,即如何保存Activity的状态。...总之,理解并正确处理Activity状态保存是Android开发中的重要技能,这能确保用户在不同情况下都能得到一致的体验。

    android中Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)

    **三、Activity状态保存** 当Activity由于内存不足或用户离开而被销毁时,系统可能会尝试恢复其状态。可以重写`onSaveInstanceState(Bundle outState)`方法来保存临时状态(如UI控件的状态),这些数据会在`onCreate...

    activity生命周期保存数据

    `onSaveInstanceState(Bundle outState)` 是Activity生命周期中的一个回调方法,系统在Activity将要被销毁但还未完全销毁时调用此方法,为Activity的状态提供了一个保存数据的机会。开发者可以在这个方法中将重要的...

    重建Activity-Recreating an Activity

    Activity的生命周期是管理Activity状态的一系列方法,确保在不同情况下能正确地保存和恢复用户的进度。在Activity生命周期中,重建(Recreating an Activity)是一个重要的概念,涉及到Activity因不同原因被销毁...

    Android面试题1.doc

    2. **Activity状态保存**: 当后台Activity由于系统资源紧张被回收时,为了在用户返回时恢复状态,开发者需要在`onSaveInstanceState(Bundle outState)`方法中保存关键数据。这个方法会在`onPause()`之前调用,提供...

    android最新面试题

    3. **Activity状态保存**:当后台Activity被系统回收时,可以通过重写`onSaveInstanceState(Bundle outState)`来保存关键数据,系统会在回收前调用此方法。恢复时,重写`onRestoreInstanceState(Bundle ...

    Android保存Activity状态的方法

    // 将View的状态保存到Bundle中 outState.putString(TEXTVIEW_STATE_KEY, myTextView.getText().toString()); // 调用父类方法,传递保存的Bundle super.onSaveInstanceState(outState); } ``` 当Activity...

    Activity 的生命周期 以及 横屏竖屏切换时 Activity 的状态变化

    此时应停止所有动画或更新UI的操作,并保存状态以防用户返回此`Activity`时需要恢复。 5. **onStop()**:当`Activity`完全不可见时调用。此时`Activity`仍然存在内存中,但用户无法与其交互。 6. **onRestart()**...

    最新最强的Android面试题

    3. **Activity状态保存**: - 当后台Activity被系统回收时,可以通过重写`onSaveInstanceState(Bundle outState)`方法来保存当前状态的关键数据。系统在销毁Activity前会调用此方法,将数据存入Bundle中。 - 之后...

    传智播客Android面试题30页 精品

    6. **Activity状态保存与恢复** 当后台Activity可能被系统回收时,开发者需在onSaveInstanceState()方法中保存关键数据,而在onRestoreInstanceState()或onCreate()中恢复状态。这样即使Activity被回收,再次启动时...

    Android精髓.docx

    2. **Activity状态保存**:为了在Activity被系统回收前保存状态,开发者通常使用`onSaveInstanceState(Bundle outState)`方法,将关键数据保存到Bundle中。当Activity重新创建时,`onCreate(Bundle ...

    Android面试题总结

    6. **Activity状态保存**: 当后台Activity被系统回收时,可以通过重写`onSaveInstanceState(Bundle outState)`来保存状态。在onCreate()方法中,通过`savedInstanceState`参数恢复状态。例如,可以将数据保存到...

    最新Android面试题.pdf

    【Activity状态保存】 在Android中,当后台的Activity因内存不足被系统回收时,可以通过重写onSaveInstanceState(Bundle outState)方法来保存当前Activity的状态。在这个方法中,开发者可以将需要保留的数据放入...

    面试题含答案.docx

    #### 1.9 Activity状态保存与恢复 - 使用`onSaveInstanceState()`来保存Activity的状态。 - 使用`onRestoreInstanceState()`来恢复Activity的状态。 #### 1.10 Activity怎么和服务绑定 - 可以通过`bindService()`...

Global site tag (gtag.js) - Google Analytics