我正在尝试了解有关活动生命周期的更多信息。我可以成功记录所有生命周期事件。 现在,当我点击按钮说“销毁”时,我正试图知道如何销毁活动。我的代码如下:
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();
}
}
答案 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()即可