无码a片

怎么保存和复原Activity景象缓存

发布日期:2022-06-18 17:09    点击次数:87

怎么保存和复原Activity景象缓存

序论

非普通活动而杂乱了Activity,那么尽管骨子 Activity依然灭亡,可是系统如故会记取它依然存在;

这么如果用户导航回到它,系统会创建一个新的的Activity使用一组保存的数据来刻画Activity在被殉国时的景象;

系统用于复原往常景象的已保存数据称为“实例景象”;

今天咱们来详备先容下;

一、怎么保存临时数据

1、中枢挨次

onSaveInstanceState() 

2、调用时机

非普通活动而杂乱了Activity,则会被系统调用; 当您的Activity入手罢手时,系统会调用,onSaveInstanceState()以便您的Activity不错使用一组键值对来保存景象信息; 此挨次的默许已毕保存相干Activity视图档次结构景象的信息,举例EditText小部件中的文本或ListView的转移位置; 为了保存Activity的附加景象信息, 免费看小12萝裸体视频国产您必须已毕onSaveInstanceState()并向对象添加键值对Bundle;

3、使用诠释

static final String STATE_SCORE = "playerScore"; static final String STATE_LEVEL = "playerLevel"; ... @Override public void onSaveInstanceState(Bundle savedInstanceState) {     // 保存用户自界说的景象     savedInstanceState.putInt(STATE_SCORE, mCurrentScore);     savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);     // 调用父类交给系统处置,国产精品极品美女自在线观看免费这么系统能保存视图档次结构景象     super.onSaveInstanceState(savedInstanceState); } 
二、怎么复原临时数据

1、中枢挨次

onRestoreInstanceState() 

2、调用时机

殉国了你的Activity,则再行启动时会被系统调用; 当您的Activity在之前被杂乱后再行创建时,您不错从Bundle系统通过您的Activity中复原您的保存景象; 这两个挨次onCreate()和onRestoreInstanceState()回调挨次都会收到Bundle包含实例景象信息的换取挨次;

诠释:

与onSaveInstanceState()区分:此处是 “如实殉国”后才略用 淌若 被用户主动殉国(如 用户按Back键),则不会调用 细目在调用 onStop()前被调用

3、调用场景

因为onCreate()调用该挨次是否系统正在创建一个新的Activity实例或再行创建一个往常的实例,是以您必须Bundle在尝试读取之前查验该景象是否为空。如果它为空,那么系统正在创建一个Activity的新实例,而不是复原之前被殉国的实例;

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState); // 牢记老是调用父类     // 查验是否正在再行创建一个往常殉国的实例     if (savedInstanceState != null) {         // 从已保存景象复原成员的值         mCurrentScore = savedInstanceState.getInt(STATE_SCORE);         mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);     } else {         // 可能入手化一个新实例的默许值的成员     }     ... } 

系统onRestoreInstanceState()唯有在存在保存景象的情况下才会复原,因此您不需要查验是否Bundle为空

public void onRestoreInstanceState(Bundle savedInstanceState) {     // 老是调用超类,以便它不错复原视图档次超等     super.onRestoreInstanceState(savedInstanceState);     // 从已保存的实例中复原景象成员     mCurrentScore = savedInstanceState.getInt(STATE_SCORE);     mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL); } 
回来

 

onSaveInstanceState挨次是Activity的人命周期挨次,主要用于在Activity殉国时保存一些信息;

 



栏目分类



Powered by 无码a片 @2013-2022 RSS地图 HTML地图