Activity的生命周期

时间:2022-04-26
本文章向大家介绍Activity的生命周期,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

前言:

接触Android快两个礼拜了,虽然已开发了一个非常简单的app,但却还没有理清Activity的生命周期,自然对它里面的几种方法的含义没有彻底清楚的认识,今天好好总结一下。

一、Activity的生命周期:

(1)运行状态:Activity位于前台,用户可见,可以获得焦点。

(2)暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。

(3)停止状态:该Activity不可见,失去焦点。

(4)销毁状态:该Activity结束,或者Activity所在进程结束。

二、Activity的加载模式:

好了,看到上面的图,相信你已经明白,activity什么时候加载哪个函数了,只需要在相应的函数中进行重写就可以了,下面程序进行简单测试,可以烧写进手机体验一下。

Mainactivity:

package com.example.x_yp.test;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity
{
    final String TAG = "--CrazyIt--";
    Button finish ,startActivity;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 输出日志
        Log.d(TAG, "-------onCreate------");
        finish = (Button) findViewById(R.id.finish);
        startActivity = (Button) findViewById(R.id.startActivity);
        // 为startActivity按钮绑定事件监听器
        startActivity.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View source)
            {
                Intent intent = new Intent(MainActivity.this
                        , SecondActivity.class);
                startActivity(intent);
            }
        });
        // 为finish按钮绑定事件监听器
        finish.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View source)
            {
                // 结束该Activity
                MainActivity.this.finish();
            }
        });
    }
    @Override
    public void onStart()
    {
        super.onStart();
        // 输出日志
        Log.d(TAG, "-------onStart------");
    }
    @Override
    public void onRestart()
    {
        super.onRestart();
        // 输出日志
        Log.d(TAG, "-------onRestart------");
    }
    @Override
    public void onResume()
    {
        super.onResume();
        // 输出日志
        Log.d(TAG, "-------onResume------");
    }
    @Override
    public void onPause()
    {
        super.onPause();
        // 输出日志
        Log.d(TAG, "-------onPause------");
    }
    @Override
    public void onStop()
    {
        super.onStop();
        // 输出日志
        Log.d(TAG, "-------onStop------");
    }
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        // 输出日志
        Log.d(TAG, "-------onDestroy------");
    }
}

SecondActivity:

package com.example.x_yp.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("SecondActivity");
        setContentView(tv);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <Button
        android:id="@+id/startActivity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="启动SecondActivity"
        />
    <Button
        android:id="@+id/finish"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="退出"
        />
</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.x_yp.test" >


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SecondActivity"
            android:label="SecondActivity"
            android:theme="@style/AppTheme" >
        </activity>
    </application>

</manifest>