Вопрос

Я изучаю программирование Android в классе, и у меня есть небольшой вопрос о том, как Finish() вписывается в жизненный цикл Activity.

Когда вы вызываете метод Finish(), какой обратный вызов жизненного цикла запускается?Я предполагаю, что это onPause(), затем onStop() и onDestroy().Это верно?

На самом деле, я просто хочу убедиться, что он не перейдет прямо к onDestroy().

Это было полезно?

Решение

Вы правы.OnPause, Onstop, OnDestroy.

Здесь - это документы.

Другие советы

На самом деле, я просто хочу убедиться, что он не перейдет прямо к onDestroy().???

НЕТ!

но есть одно исключение когда вызов Finish() приводит к разрыву жизненного цикла активности это происходит, когда вы вызываете Finish() из метода onCreate(), и в этом случае onDestroy() будет вызван немедленно!

http://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)

Да, он не будет прыгать в ondestroy () пропустить onspause и onstop.

Также вы можете быть заинтересованы в ONPOSTRESUME (), ONPOSTPAUE (), ONPOSTCREATE (), ONUSERLEAVEHINT () и т. Д. Они не указаны в жизненном цикле деятельности

Также может быть очень интересно проанализировать такие проблемы и проблемы.Например, вы можете установить точку отключения отборгина в методе ONPAUE () и расследовать поток программы с этого момента.

Также некоторые распечатки могут дать вам некоторую полезную информацию.

Вы могли бы, например, написать систему .out.println («Название метода« + »под названием«);В каждом методе вашей деятельности, которую вы думаете, называется.(Перезаписать, например, ONPAUE () , вызовите SUPER.ONPAUE () и поместите консольную печати, чтобы увидеть, называется ли метод.

Вы многое узнаете о системе Android, выполняя такие маленькие расследования, пока вы развиваете.

Создайте новое приложение для Android и поместите это в основную деятельность. Затем просмотрите окно Logcat (под DDMS Android) для выходов

Создайте вас приложение одинаково - добавьте все onPause, 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