在活动的onPause()或onStop()状态下运行代码



我的android应用程序中有一个功能,每次用户试图编辑他或她的个人资料时都需要运行。有两个部分的编辑配置文件在我的应用程序(请不要问为什么,它背后有一个很长很繁琐的原因)。如果用户决定取消一切,我需要还原用户在编辑配置文件的第一部分所做的更改。我在编辑配置文件的第二部分做了一个取消按钮,但我的问题是,如果用户按下返回按钮或设备上的home按钮,应用程序调用onPause()onStop()怎么办?我如何在活动的这两个阶段运行相同的代码?有谁知道如何把代码放在不同的活动状态吗?我只是做一个函数onPause()和粘贴代码在那里吗?这样行吗?

是的,它绝对可以工作。在这种情况下,您应该在onPause()方法中编写代码。

下面是Activity生命周期的总结:

onCreate ():

在第一次创建活动时调用。这是你应该做所有常规静态设置的地方:创建视图,将数据绑定到列表,等等。此方法还为您提供了一个Bundle,其中包含活动先前冻结的状态(如果有的话)。总是跟在onStart()后面。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Write your code here
}

onStart ():

当活动对用户可见时调用。然后是onResume(),如果活动出现在前台,或者onStop(),如果它被隐藏。

@Override
public void onStart() {
    super.onStart();
    //Write your code here
}

onResume ():

当活动开始与用户交互时调用。在这一点上,你的活动是在活动堆栈的顶部,与用户输入到它。总是跟着onPause()。

@Override
public void onResume() {
    super.onResume();
    //Write your code here
}

onPause ():

当系统即将开始恢复上一个活动时调用。这通常用于提交未保存的更改到持久数据,停止动画和其他可能消耗CPU的事情,等等。此方法的实现必须非常快,因为在此方法返回之前不会恢复下一个活动。然后是onResume(),如果activity返回到前面,或者onStop(),如果它变得对用户不可见。

@Override
public void onPause() {
    super.onPause();
    //Write your code here
}

原():

当activity对用户不再可见时调用,因为另一个activity已经恢复并且正在覆盖这个activity。这可能是因为一个新的活动正在启动,一个现有的活动被带到这个活动的前面,或者这个活动正在被销毁。然后是onRestart(),如果这个活动回来与用户交互,或者onDestroy(),如果这个活动离开。

@Override
public void onStop() {
    super.onStop();
    //Write your code here
}

onDestroy ():

活动被销毁前收到的最后一个呼叫。这可能是因为活动正在结束(有人在其上调用了finish()),也可能是因为系统正在临时销毁该活动的实例以节省空间。您可以使用isFinishing()方法来区分这两种场景。

@Override
public void onDestroy() {
    super.onDestroy();
    //Write your code here
}

你可以在onPause和onStop里面做很多事情,只要记住在每个里面调用super.onPause();, super.onStop();或任何你需要的东西,只要遵循下面的模式。只需将代码添加到您的活动,您就可以开始了。

@Override
public void onPause() {
    super.onPause();  // Always call the superclass method first
    // Do what you want.
}

另外,如果你想让你的用户能够回到你的活动和编辑的东西,而不是关闭它,你可以调用onBackPressed():

@Override
public void onBackPressed() {
     super.onBackPressed();
     // You can just call onStop to close the app
     // or do what you want.
}

只有onPause保证被调用

最新更新