关于onPause和onResume的建议

时间:2012-04-27 23:07:31

标签: java android

如果我使用下面的代码,这将恢复已输入EditTextfields和选定的微调项目的文本吗?

    @Override
    protected void onPause(){ 
        super.onPause();

    }


    @Override 
    protected void onResume(){ 
        super.onResume(); 

    }

或者我必须告诉它保存当前值然后在恢复活动时恢复吗?当我使用模拟器时,如果我没有这些方法,我会说回家,然后再次运行我的应用程序,它总是加载回以前的状态,所以我的问题是这实际上是否做了antyhing?

4 个答案:

答案 0 :(得分:1)

不,这段代码没有做任何事情。您将覆盖这些方法,但为它们提供仅调用父实现的实现。这与首先​​不覆盖它们相同。

暂停/恢复时,保存/恢复状态并非绝对必要。您需要手动执行某些状态保存的唯一原因是,即使您的应用程序被终止也要恢复状态。

答案 1 :(得分:1)

不,这实际上只调用了超类onPause()和onResume()而没有做任何其他事情。编辑框中的值保留在那里,因为即使应用程序暂停,活动堆栈上仍然存在等待。 但Android可以终止您暂停的活动,您的数据也会丢失。所以你必须将它们保存在onPause并在onResume上恢复它们​​以避免这种情况。

答案 2 :(得分:0)

您在微调器中的值仍然相同,因为应用尚未被杀死。它只是暂停状态仍在内存中。如果应用程序被销毁,则微调器的值将返回onCreate方法以及它们在开始时具有的任何值。

在这里查看每种方法的用途 - > https://developer.android.com/reference/android/app/Activity.html

答案 3 :(得分:0)

只需在调用onDestroy()时保存状态。只有当您使用后退按钮或操作系统在处于停止状态时杀死Activity时才会发生这种情况。

如果Activity被部分遮挡,它将被暂停,但如果它被完全遮挡,则会被停止。

当它再次位于堆栈顶部时,它将恢复或启动。

尝试使用Log在每个事件发生时向LogCat写入消息,然后您就可以看到他们被调用的时间和原因。