Android开发从入门到放弃(2)保存Activity的状态
2016-12-21 23:10
411 查看
移动设备的一个特点就是会经常在不同的APP之间切换,例如,你在使用一个APP的时候,有可能你会接到一个电话,或者点开了一个推送消息而跳转到了另一个APP,一段时间之后你会再次回到原来的APP,这时为了防止用户数据的丢失,你可能需要在用户离开APP时将有些东西保存起来,然后当用户回来后再把保存的数据恢复回来。本篇博客就会简单介绍一些如何保存Activity的状态。
首先,新建一个Android项目,在activity_main.xml中,将代码修改为
我添加了一个Button和一个TextView。下面是MainActivity.java的代码
每次点击Button时,都会将一个计数器+1,并显示在TextView上。
运行上面的代码,运行的不错。但是,如果你旋转手机屏幕至横屏,你会发现,TextView不显示了,回到了最初的状态。其实,当APP进入横屏模式(landscape模式)时,Android系统会重新创建Activity,导致mCounter的值变为了0,TextView的文字也不见了。如何解决呢?
解决方法就是分别实现Activity的
然后运行APP,先点击几下Button,然后翻转屏幕至横屏,发现状态还保留着,同样,再回到竖屏时状态也保留着。
好,博客写到这里。祝你的Android开发之路从入门到放弃,不谢!
首先,新建一个Android项目,在activity_main.xml中,将代码修改为
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.zdk.statesaver.MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Count" android:onClick="onClickCounter"/> <TextView android:id="@+id/textViewCounter" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
我添加了一个Button和一个TextView。下面是MainActivity.java的代码
public class MainActivity extends AppCompatActivity { static final String KEY_COUNTER = "COUNTER"; private int mCounter=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClickCounter(View view) { mCounter++; ((TextView)findViewById(R.id.textViewCounter)).setText("Counter: " + Integer.toString(mCounter)); } }
每次点击Button时,都会将一个计数器+1,并显示在TextView上。
运行上面的代码,运行的不错。但是,如果你旋转手机屏幕至横屏,你会发现,TextView不显示了,回到了最初的状态。其实,当APP进入横屏模式(landscape模式)时,Android系统会重新创建Activity,导致mCounter的值变为了0,TextView的文字也不见了。如何解决呢?
解决方法就是分别实现Activity的
onSaveInstanceState方法和
onRestoreInstanceState方法,前者用于保存状态,后者用于恢复状态。
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEY_COUNTER,mCounter); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); mCounter=savedInstanceState.getInt(KEY_COUNTER); ((TextView)findViewById(R.id.textViewCounter)).setText( "Counter: " + Integer.toString(mCounter)); }
然后运行APP,先点击几下Button,然后翻转屏幕至横屏,发现状态还保留着,同样,再回到竖屏时状态也保留着。
好,博客写到这里。祝你的Android开发之路从入门到放弃,不谢!
相关文章推荐
- Android开发之保存和恢复Activity的状态与数据
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- Android开发_如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState參数解析
- Android开发从入门到放弃(1)在Activity之间传递数据
- Android开发从入门到放弃(3)使用SharedPreferences保存数据
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- Android开发之InstanceState详解(转)---利用其保存Activity状态
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- Android开发中Activity状态的保存与恢复
- android开发_Intent高级学习(保存Activity状态)
- android中的activity的状态的保存:
- 【activity】android activity详解三:保存activity的状态
- android activity详解四:保存activity的状态的更多事项
- Android中Activity状态的保存和恢复:onSaveInstanceState和onRestoreInstanceState方法
- Android开发之道(6)Activity的状态转移
- android activity详解三:保存activity的状态
- android -保存和恢复activity的状态数据