完成()和活动生命周期
-
11-12-2019 - |
题
我正在学习Android编程的类,我有一个关于finess()如何适应活动生命周期的问题。
当您打电话完成()时,启动什么生命周期回调?我认为它是onpause(),然后是onstop()和ondestroy()。这是正确的吗?
真的,我只是想确保它不会直接向ondestroy()。
解决方案
你是正确的。onpause,onstop,ondestroy。
这里是docs。
其他提示
真的,我只是想确保它不会直接向ondestroy()跳转。???
no!
但有一个例外当 calling finish()导致活动生命周期中断时,当你呼叫finess()方法时,它会发生这种情况<强> ondestroy()将立即被称为!
http://developer.android.com /参考/ android / app / affacture.html#oncreate(android.os.bundle)
是的,它不会跳转到ondestroy()跳过onpause和onstop。
您也可能对 onpostresume(),onpostpause(),onpostpause(),onuserleavehint()等.... 这些未在活动生命周期中列出
对您来说也可能非常有趣地分析这些问题和问题。您可以例如在 onpause()方法中设置debuggin断点,并从此调查程序流程。
还有一些打印输出可以给您一些有用的信息。
您可以例如写入system.out.println(“方法的名称”+“调用”。);在您认为的每种方法中,您认为的活动。(例如覆盖例如 onpause(),调用 super.onpause()并放置一个控制台打印,以查看该方法是否调用。
您将在您开发时学会有关Android系统的许多调查。
创建一个新的Android应用程序并将其放在主活动中。 然后查看输出的logcat窗口(在Android DDMS下)
构建您申请相同 - 添加所有ONPAUE,ONSTOP等。
作为您的程序运行,您可以监控所谓的和在什么时候。
package com.app.myapp;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
public class MyApp extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
Button exit = new Button(this);
exit.setText("finish");
exit.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
Log.v("MyApp", "finish");
finish();
}
});
layout.addView(exit);
setContentView(layout);
Log.v("MyApp", "onCreate");
}
@Override
protected void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
Log.v("MyApp", "onDestroy");
}
@Override
protected void onPause()
{
// TODO Auto-generated method stub
super.onPause();
Log.v("MyApp", "onPause");
}
@Override
protected void onRestart()
{
// TODO Auto-generated method stub
super.onRestart();
Log.v("MyApp", "onRestart");
}
@Override
protected void onResume()
{
// TODO Auto-generated method stub
super.onResume();
Log.v("MyApp", "onResume");
}
@Override
protected void onStart()
{
// TODO Auto-generated method stub
super.onStart();
Log.v("MyApp", "onStart");
}
@Override
protected void onStop()
{
// TODO Auto-generated method stub
super.onStop();
Log.v("MyApp", "onStop");
}
}
.