繁体   English   中英

单击按钮时如何破坏活动?

[英]How to destroy an activity when I click a button?

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

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()finish()将触发onDestroy()

首先,此答案假定您要引用的是Android的Activity类以及它的finish()方法和onDestroy()生命周期方法。

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

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

  • 设备制造商或ROM修改器可能会引入一些螺钉更改,这会破坏finish()和onDestroy()之间的连接

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

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

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

这是Android系统:finish()总是会调用onDestroy()吗? 从中引用答案。

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

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

Activity.finish()方法的作用中引用了上面的内容?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM