我正在学习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");
    }

}
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top