Java 如何在单击按钮时销毁活动?

Java 如何在单击按钮时销毁活动?,java,android,android-activity,activity-lifecycle,Java,Android,Android Activity,Activity Lifecycle,我正在努力学习更多关于活动生命周期的知识。我可以成功地记录所有生命周期事件。 现在,当我点击一个按钮说“销毁”时,我试图知道如何销毁一个活动。我的代码如下: package com.mavenmaverick.lifecycle; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; public class MainActivity

我正在努力学习更多关于活动生命周期的知识。我可以成功地记录所有生命周期事件。 现在,当我点击一个按钮说“销毁”时,我试图知道如何销毁一个活动。我的代码如下:

package com.mavenmaverick.lifecycle;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

  String LOG_TAG = "EVENT";

    @Override
    public void onCreate(Bundle savedInstanceState) {
      Log.d(LOG_TAG, "onCreate()");
      super.onCreate(savedInstanceState);
    }

    @Override
    public void onStart()
    {
      Log.d(LOG_TAG, "onStart()");
      super.onStart();
    }

    @Override
    public void onStop()
    {
      Log.d(LOG_TAG, "onStop()");
      super.onStop();
    }

    @Override
    protected void onDestroy() {
      Log.d(LOG_TAG, "onDestroy()");
      super.onDestroy();
    }

    @Override
    protected void onPause() {
      Log.d(LOG_TAG, "onPause()");
      super.onPause();
    }

    @Override
    protected void onResume() {
      Log.d(LOG_TAG, "onResume()");
      super.onResume();
    }
}
只需在按钮的onClickListener中调用finish()

只需在按钮的onClickListener中调用finish()

调用finish() finish()将触发onDestroy()

首先,这个答案假设您指的是Android的Activity类及其finish()方法和onDestroy()生命周期方法

其次,这取决于您对“确定”的定义:

您的进程可能会在finish()和ondestory()之间终止,原因与触发finish()调用的原因无关

  • 设备制造商或ROM调试器可能会引入一些扭曲的更改,从而破坏finish()和onDestroy()之间的连接

  • 在finish()和onDestroy()之间,电池可能会耗尽

  • 第三,finish()不调用onDestroy()。您可以通过阅读源代码来了解这一点。finish()通常触发对onDestroy()的调用

一般来说,finish()最终将导致调用onDestroy()

下面是答案的来源

是,finish()从活动堆栈中删除该活动

此外,onDestroy()不是析构函数。它实际上并没有破坏这个物体。它只是一个基于特定状态调用的方法。因此,在超类的onDestroy()运行并返回后,您的实例仍然处于活动状态,并且运行得很好。Android会保留进程,以防用户想要重新启动应用程序,这会加快启动阶段。进程将不会执行任何操作,如果需要回收内存,进程将被终止

参考上文

在这里完成这个

调用finish() finish()将触发onDestroy()

首先,这个答案假设您指的是Android的Activity类及其finish()方法和onDestroy()生命周期方法

其次,这取决于您对“确定”的定义:

您的进程可能会在finish()和ondestory()之间终止,原因与触发finish()调用的原因无关

  • 设备制造商或ROM调试器可能会引入一些扭曲的更改,从而破坏finish()和onDestroy()之间的连接

  • 在finish()和onDestroy()之间,电池可能会耗尽

  • 第三,finish()不调用onDestroy()。您可以通过阅读源代码来了解这一点。finish()通常触发对onDestroy()的调用

一般来说,finish()最终将导致调用onDestroy()

下面是答案的来源

是,finish()从活动堆栈中删除该活动

此外,onDestroy()不是析构函数。它实际上并没有破坏这个物体。它只是一个基于特定状态调用的方法。因此,在超类的onDestroy()运行并返回后,您的实例仍然处于活动状态,并且运行得很好。Android会保留进程,以防用户想要重新启动应用程序,这会加快启动阶段。进程将不会执行任何操作,如果需要回收内存,进程将被终止

参考上文


在按钮的
onClickListener
中执行此调用
finish()
。我听说finish()不会破坏进程并释放内存。它只是从活动堆栈中删除活动。什么过程?为什么需要释放内存?在按钮的
onClickListener
中调用
finish()
。我听说finish()不会破坏进程并释放内存。它只是从活动堆栈中删除活动。什么过程?为什么您觉得需要释放内存?但是,我听说finish()不会破坏您的进程并释放内存。它只是将活动从活动堆栈中删除,但我听说finish()不会破坏进程并释放内存。它只是从活动堆栈中删除活动。