重新启动后恢复视图状态

Posted

技术标签:

【中文标题】重新启动后恢复视图状态【英文标题】:restore views state after reStart 【发布时间】:2015-10-13 03:47:11 【问题描述】:

当按下 Home 键时,应用程序进入后台,当我再次将其置于最前面时,一些按钮失去了可见性和文本状态。我该如何解决这个问题?,Activity reStart 获取被称为但不是 onCreate 因此 savedInstanceState 不可用。视图在 xml 中定义了它们的 id,它们的可见性和文本在代码中发生了变化。

【问题讨论】:

when I bring it to the front again, some buttons loose their visibility and text states 你的意思是在理想情况下还是你正在杀死应用程序进程? 只需覆盖活动中的后退按钮,您的任务就会后退。 moveTaskToBack(true); 应用程序没有被杀死,因为片段视图仍然完好无损。不调用 onDestroy。 onRestart 被调用。 【参考方案1】:

我试过这个适合我的接缝。不确定这是否是“正确”的做法。

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    mViewState = new Bundle();


@Override
protected void onPause() 
    super.onPause();
    mViewState.putInt("mainBtVis", mMainButtons_LL.getVisibility());


@Override
protected void onPostResume() 
    super.onPostResume();
    int vis = mViewState.getInt("mainBtVis");
    mYes_Bt.setVisibility((vis == 0 ? View.VISIBLE : vis == 4 ? View.INVISIBLE : View.GONE);    

【讨论】:

以上是关于重新启动后恢复视图状态的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 SKAction 序列在解码后重新启动?

设置通电自启动

选中模态视图行

备份还原后 hsqldb 没有变化,直到重新启动

grpc:服务器重新启动后大约 15 秒无法恢复连接

如何恢复iphone应用程序的视图堆栈