gpt4 book ai didi

java - 单击按钮时如何销毁 Activity ?

转载 作者:行者123 更新时间:2023-12-01 17:14:06 27 4
gpt4 key购买 nike

我正在尝试了解有关 Activity 生命周期的更多信息。我可以成功记录所有生命周期事件。现在,我想知道当我单击“销毁”按钮时如何销毁 Activity 。我的代码如下:

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();
}
}

最佳答案

调用完成()finish() 会触发 onDestroy()

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

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

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

  • 设备制造商或 ROM 修改者可能会引入一些奇怪的更改,从而破坏 finish() 和 onDestroy() 之间的连接

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

  • 第三,finish() 不会调用 onDestroy()。你可以通过阅读源代码来判断。 finish() 通常会触发对 onDestroy() 的调用。

一般来说,finish()最终会导致onDestroy()被调用。

这是Android: Will finish() ALWAYS call onDestroy()?答案来自其中。

Yes, finish() removes the activity from the activity stack.

此外,onDestroy() 不是析构函数。它实际上并没有破坏该对象。它只是根据某种状态调用的方法。因此,在父类(super class)的 onDestroy() 运行并返回后,您的实例仍然处于 Activity 状态并且运行良好*。Android 会保留进程,以防用户想要重新启动应用程序,这使得启动阶段更快。该进程不会做任何事情,如果需要回收内存,该进程将被杀死

以上内容引用自what exactly Activity.finish() method is doing?

这里浏览一下http://developer.android.com/training/basics/activity-lifecycle/index.html

关于java - 单击按钮时如何销毁 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22829016/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com