Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在活动的onPause()或onStop()状态下运行代码_Android_Android Activity_Android Lifecycle_Onpause - Fatal编程技术网

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

Android 在活动的onPause()或onStop()状态下运行代码,android,android-activity,android-lifecycle,onpause,Android,Android Activity,Android Lifecycle,Onpause,我的android应用程序中有一个功能,每次用户试图编辑其个人资料时都需要运行该功能。在我的应用程序中,编辑个人资料有两个部分(请不要问为什么,它背后有一个非常冗长乏味的原因)。如果用户决定取消所有操作,我需要还原用户在编辑配置文件的第一部分中所做的更改。我在编辑配置文件的第二部分中做了一个取消按钮,但我的问题是,如果用户按下设备上的返回按钮或主页按钮,应用程序调用onPause()和onStop(),该怎么办?如何在活动的这两个阶段中运行相同的代码?有谁知道如何在活动中使用不同状态的代码?我是

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

行,肯定行。在您的情况下,应该使用onPause()方法编写代码

以下是活动生命周期的摘要: onCreate():

在首次创建活动时调用。这是您应该执行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供包含活动先前冻结状态(如果存在)的捆绑包。 始终后跟onStart()

onStart():

当活动对用户可见时调用。 如果活动出现在前台,则后跟onResume(),如果活动隐藏,则后跟onStop()

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

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

onPause():

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

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

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

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

在您的活动被销毁之前,您收到的最后一个呼叫。这可能是因为活动正在完成(有人对其调用finish()),或者是因为系统正在临时销毁此活动实例以节省空间。可以使用isFinishing()方法区分这两种情况


您可以在onPause和onStop中执行许多操作,只需记住调用
super.onPause();
super.onStop();
,或者在每个操作中执行您需要的任何操作,只需遵循以下模式。只需将代码添加到您的活动中,您就可以开始了

@Override
public void onPause() {
    super.onPause();  // Always call the superclass method first
    // Do what you want.
}
此外,如果您希望用户能够返回您的活动并编辑某些内容,而不是关闭它,则只需调用
onBackPressed()



只有onPause才能保证被称为

好吧,是的,它应该有效…你试过了吗?哈哈,不,我只是在写问题时考虑过,然后在发布后试过。是的,它有效。无论如何,谢谢:哈哈,没问题。:)检查我的更新答案,我已经解释了活动生命周期的每一点。希望这对你有帮助。:)
@Override
public void onStop() {
    super.onStop();
    //Write your code here
}
@Override
public void onDestroy() {
    super.onDestroy();
    //Write your code here
}
@Override
public void onPause() {
    super.onPause();  // Always call the superclass method first
    // Do what you want.
}
@Override
public void onBackPressed() {
     super.onBackPressed();
     // You can just call onStop to close the app
     // or do what you want.
}