体验活动的生命周期

体验活动的生命周期

Android活动的生命周期图如下:

项目步骤:

1.创建一个新项目ActicityLifeCycleTest
2.创建活动DialogActivity和NormalActivity
3.修改activity_normal.xml和activity_dialog.xml,如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.acticitylifecycletest.NormalActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="this is a normalActivity"
        />

</android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.acticitylifecycletest.DialogActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="this  is dialogActivity"
        />

</android.support.constraint.ConstraintLayout>
修改AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.acticitylifecycletest">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".NormalActivity"
            android:label="这个是正常的窗口"
            >
        </activity>

        <!--
        主要修改DialogActivity的相关内容
        android:theme="@android:style/Theme.Dialog"
            是让DialogActivity使用对话框样式
        -->
        <activity
            android:name=".DialogActivity"
            android:theme="@android:style/Theme.Dialog"
            android:label="这个是对话框的窗口"
            >
        </activity>
        <activity android:name=".MainActivity"
            android:label=""
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

在layout下建一个activity_main.xml:

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

    <Button
        android:id="@+id/start_normal_activity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="start normalActivity"
        />

    <Button
        android:id="@+id/start_dialog_activity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="start DialogActivity"
        />

</LinearLayout>

三个类中相关的代码:



DialogActivity:

package com.example.acticitylifecycletest;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
//注意:这里不能继承AppCompatActivity 不然会报错
public class DialogActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
    }
}

NormalActivity:

package com.example.acticitylifecycletest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class NormalActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_normal);
    }
}

MainActivity:

package com.example.acticitylifecycletest;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button startNormalActivity = (Button) findViewById(R.id.start_normal_activity);
        Button startDialogActivity = (Button) findViewById(R.id.start_dialog_activity);

        //正常的按钮事件
        startNormalActivity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, NormalActivity.class);
                startActivity(intent);
            }
        });

        //对话框按钮事件
        startDialogActivity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, DialogActivity.class);
                startActivity(intent);
            }
        });

    }

    /**
     * 生命周期如下
     */

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: 开始");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume: 继续");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: 暂停");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: 停止");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: 销毁");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG, "onRestart: 重启");
    }
}

2.在销毁时候传值

当窗口处于停止状态的时候,我们需要保存一部分销毁前的值,可以使用bundle,如下:

mainActicity中加入:

@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        String template = "something you typed";
        outState.putString("data_key",template);
    }

在onCreate中取出

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate: ");

        if (savedInstanceState!=null){
//            取出销毁时候保存的值
            String templateData = savedInstanceState.getString("data_key");
            Log.d(TAG, templateData);

        }
    }

原文地址:https://www.cnblogs.com/charlypage/p/9961155.html

时间: 2024-08-27 19:26:42

体验活动的生命周期的相关文章

【Android】16、体验活动的生命周期(上)

本篇博文最后修改时间:2016年5月8日,23:37. 一.简介 本篇介绍体验活动的生命周期. 二.实验平台 系统版本:Windows7 家庭普通版 32位操作系统. 三.版权声明 博主:思跡 声明:喝水不忘挖井人,转载请注明出处. 原文地址:http://blog.csdn.net/omoiato 联系方式:[email protected] Java零基础入门交流群:541462902 四.体验活动的生命周期 1.关闭ActivityTest 项目,新建一个ActivityLifeCycle

Android第一行代码学习笔记七---活动的生命周期

@1.返回栈 Android中的活动是可以层叠的,我们每启动一个新的活动,就会覆盖在原活动之上,然后点击Back键就会销毁最上面的活动,下面一个活动就会重新显示出来. Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back Stack).栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置.而当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,

(Android第一行代码活动的生命周期)生命周期

活动的生命周期   掌握活动的生命周期对任何 Android开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余.你的应用程序将会拥有更好的用户体验.     返回栈    1.  定义: Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动 的集合这个栈也被称作返回栈(Back Stack).    2. 栈顶:存放刚启动的一个新的活动.(当我们 按下 Back键或调用 finis

Android学习笔记(五)——活动的生命周期

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 为了能写出流畅连贯的程序,我们需要了解一下活动的生命周期. 一.返回栈 Android 中的活动是可以层叠的.我们每启动一个新的活动,就会覆盖在原活动之上,然后点击 Back 键会销毁最上面的活动.事实上,Android 是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack) .默认情况下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位

【Android】15、活动的生命周期

本篇博文最后修改时间:2016年5月5日,23:37. 一.简介 本篇介绍活动的生命周期. 二.实验平台 系统版本:Windows7 家庭普通版 32位操作系统. 三.版权声明 博主:思跡 声明:喝水不忘挖井人,转载请注明出处. 原文地址:http://blog.csdn.net/omoiato 联系方式:[email protected] Java零基础入门交流群:541462902 四.活动的生命周期 1.学习意义 掌握活动的生命周期对任何Android 开发者来说都非常重要, 当你深入理解

Android活动的生命周期

掌握活动的生命周期对任何Android开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序. -----------------------------------------------返回栈----------------------------------------------------------- Android的活动是可以层叠的.每启动一个新活动,就会覆盖在原有活动之上,然后点击Back键会销毁最上面的活动,下面的一个活动就会重新显示出来. 其实An

Xamarin.Android活动的生命周期

一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的,而不像Windows上开发的程序. 二.活动的生命周期 这里我们借助一张图帮助我们理解: 当然很多人现在还看不懂这张图,下面我们会逐一介绍: 1.OnCreate 这个方法是打开活动后第一个执行的事件,当然也是我们必须重写的一个方法,其中它大致负责如下的事情: l  创建视图 l  初始化变量 l 

Managing the Activity Lifecycle 管理活动的生命周期

Managing the Activity Lifecycle 管理活动的生命周期 Previous         Next         Get started Dependencies and prerequisites 依赖和先决条件 How to create an Android project (see Creating an Android Project) 如何创建一个Android项目(参见创建一个Android项目) You should also read 你也应该阅读

Android---7---活动及活动的生命周期

什么是Activity 简单的说Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面,也就是手机屏幕上所显示的内容. 在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Activity.Intent-filter中的两行代码非常重要,表示该活动是主活动. 当程序第一次运行时就可以看到这个Activity,这个Activity可以通过启动其他的Activity进行相关操作.当启动其他的Activity时,这个当前的活动就会停止,被压入栈底,新的活