运行 activity 的 onPause() 或 onStop() 状态中的代码

Running code in onPause() or onStop() state of the activity

我的 android 应用程序中有一项功能需要 运行 每次用户尝试编辑他或她的个人资料时。我的应用程序中有两个部分的编辑配置文件(请不要问为什么,它背后有一个非常冗长乏味的原因)。如果用户决定取消所有内容,我需要还原用户在编辑配置文件的第一部分所做的更改。我在编辑个人资料的第二部分做了一个取消按钮,但我的问题是,如果用户按下 return 按钮或设备上的主页按钮并且应用程序调用 onPause()onStop()?我如何 运行 在这两个活动阶段使用相同的代码?那里有人知道如何将代码置于活动的不同状态吗?我只是创建一个函数 onPause() 并将代码粘贴在那里吗?那行得通吗?

是的,它应该绝对有效。在您的情况下,您应该在 onPause() 方法中编写代码。

这里是 Activity 生命周期的总结:

onCreate():

首次创建 activity 时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含 activity 先前冻结状态的 Bundle(如果有的话)。 始终跟随 onStart()。

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

onStart():

当 activity 对用户可见时调用。 如果 activity 出现在前台,则紧随其后的是 onResume(),如果它被隐藏,则紧随其后的是 onStop()。

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

onResume():

当 activity 将开始与用户交互时调用。此时您的 activity 位于 activity 堆栈的顶部,用户输入将进入它。 始终跟随 onPause()。

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

onPause():

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

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

onStop():

当 activity 对用户不再可见时调用,因为另一个 activity 已恢复并正在覆盖这个。这可能是因为一个新的 activity 正在启动,一个现有的被带到这个之前,或者这个正在被销毁。 如果此 activity 返回与用户交互,则后跟 onRestart(),如果此 activity 消失,则后跟 onDestroy()。

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

onDestroy():

在你的 activity 被摧毁之前你接到的最后一个电话。这可能是因为 activity 正在完成(有人在其上调用了 finish() ,或者是因为系统正在临时销毁 activity 的这个实例以保存 space。你可以区分这两种情况与 isFinishing() 方法。

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

你可以在 onPause 和 onStop 中做很多事情,只要记住调用 super.onPause();super.onStop(); 或你需要的任何东西,只需遵循下面的模式。只需将代码添加到您的 Activity 即可。

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

此外,如果您希望您的用户能够返回到您的 activity 并编辑某些内容而不是将其关闭,您只需调用 onBackPressed():

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

只保证调用onPause