有些软件在editText输入用户名后,比如输入abc,按下home键,然后从通知再进入,发现abc还存在,并且不重复创建activity,这是怎么做到的呢》?是什么原理呢?
解决方案 »
- 在模拟器上能运行,在手机上装时就出现“解析软件包时出现问题”,在线等
- Android真机如何加载驱动?
- Android Service的问题
- 播放网络视频时MediaPlayer.prepare()异常,求助
- 求指点!如何开打rom里面的system.img文件!
- 毕业设计
- Android中Eclipse错误You must restart adb and Eclipse.
- fragment可以从activity取下,再add到另一个activity上吗?现在项目有这样的需求,跪求大神解答,感激不尽
- 打开系统摄像机怎么设置默认打开的是前置摄像头?
- 使用ExpandableListview展开多项数据问题
- 奇怪的include改动无效问题。
- android 2.2 如何退出程序
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.widget.EditText;/*
* 关于保存状态,还有2个方法可以参考:onSaveInstanceState(Bundle)保存状态
* onRestoreInstanceState,回复状态,但根据文档,这2个方法并不保证一定会被调用
* 因此建议还是使用onCreate()和onPause()配合来完成,并将其保存到永久存储上(文件或者数据库)
*/public class SavedStatusActivity extends Activity {
EditText et1, et2;
SharedPreferences preferences; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.saved_status);
// 取得EditText对象
et1 = (EditText) findViewById(R.id.editText1);
// 取得私有的SharedPreferences,它的作用就在于保存EditText1的内容
preferences = this.getPreferences(MODE_PRIVATE);
// 尝试从中读取数据
String savedValue = preferences.getString("ET1_VALUE", "");
// 将其放到et1中
et1.setText(savedValue);
} @Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
} @Override
protected void onPause() {
// TODO Auto-generated method stub
// 在暂停时(退出该Activity)的时候,应该将需要保留的数据保存到
// SharedPreferences或者SQLite中,这里是SharedPrefenrences
Editor editor = preferences.edit();
editor.putString("ET1_VALUE", et1.getText().toString());
editor.commit();
super.onPause();
} @Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
}
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText android:id="@+id/editText1" android:layout_width="match_parent"
android:layout_height="wrap_content" android:hint="退出后会保存状态">
<requestFocus></requestFocus>
</EditText>
<EditText android:id="@+id/editText2" android:layout_width="match_parent"
android:layout_height="wrap_content" android:hint="退出后不会保持状态"></EditText>
</LinearLayout>
在pause之前要保存一下activity的状态和数据。
这样,返回之后,就可以再获取到之前的状态了。
样例,就参考3楼代码。
再回来的时候,Activity的生命周期是:onRestart-->onStart-->onResume
Activity并没有被销毁,所以不会重新再创建