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

时间:2014-04-03 05:58:57

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

2 个答案:

答案 0 :(得分:3)

致电完成() finish()将触发onDestroy()

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

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

您的进程可以在finish()和onDestroy()之间终止,原因与触发完成调用的任何内容无关()

  • 设备制造商或ROM修改器可能会引入一些棘手的变化,会破坏finish()和onDestroy()之间的连接

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

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

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

以下是提及答案的Android: Will finish() ALWAYS call onDestroy()?

  

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

另外,onDestroy()不是析构函数。它实际上并没有破坏对象。它只是一种基于某种状态调用的方法。因此,在超类的onDestroy()运行并返回之后,你的实例仍然存活并且非常好*。如果用户想要重新启动应用程序,Android会保持进程,这会使启动阶段更快。该过程将不会执行任何操作,如果需要回收内存,则该过程将被终止

what exactly Activity.finish() method is doing?

推荐以上内容

通过此http://developer.android.com/training/basics/activity-lifecycle/index.html

答案 1 :(得分:2)

只需在按钮

的onClickListener中调用finish()即可