zoukankan      html  css  js  c++  java
  • Activity的生命周期与加载模式——Activity的生命周期演示

          当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理。当前活动的Activity位于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入飞活动状态,也可从非活动状态准入活动状态。

         归纳起来Activity大致会经过如下4个状态。

    • 活动状态:当前Activity位于前台,用户可见,可以获得焦点。
    • 暂停状态:其他Activity位于前台,该Activity依可见,只是不能获得焦点。
    • 停止状态:该Activity不可见,失去焦点。
    • 销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束。  

        图4.15(该图示Android官方文档图片)显示了Activity生命周期及相关回调方法。

      图4.15 Activity生命周期及回调方法

      从图4.15可以看出,在Activity的生命周期中,如下方法会被系统回调。

    • onCreate(Bundle savedStatus):创建Activity时被回调。该方法只会被调用一次。
    • onStart():启动Activity时被回调。
    • onRestart():重新启动Activity时被回调。
    • onResume():恢复Activity时被回调,onStart()方法后一定会回调onResume()方法。
    • onPause():暂停Activity时被回调。
    • onStop():停止Activity时被回调。
    • onDestroy():销毁Activity时被回调。该方法只会被调用一次。

       下面的Activity覆盖了上面的7个生命周期的方法,并在每个方法中增加了一行记录日志代码。该Activity的界面布局很简单,一个用于启动一个对话框风格的Activity,另一个用于退出该应用。

    布局文件如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        >
    
        <Button
            android:id="@+id/startActivity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="启动对话框风格的Activity" />
    
        <Button
            android:id="@+id/finisth"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="退出" />
    
    </LinearLayout>

    后台Java代码文件如下:

    package com.example.studyactivity;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class Lifecycle extends Activity {
        final String TAG="--CrazyIt--";
        Button finish,startActivity;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_lifecycle);
            //输出日志
            Log.d(TAG,"------------onCreate-----------------");
            finish=(Button)findViewById(R.id.finisth);
            startActivity=(Button)findViewById(R.id.startActivity);
            //为startActivity按钮绑定事件监听器
            startActivity.setOnClickListener(new OnClickListener(){
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent intent=new Intent(Lifecycle.this,DialogActivity.class);
                    startActivity(intent);
                }
            });
            //为finish按钮绑定事件监听器
            finish.setOnClickListener(new OnClickListener(){
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //结束该Activity
                    Lifecycle.this.finish();
                }
                
            });
    
        }
    
        @Override
        protected void onStart() {
            // TODO Auto-generated method stub
            super.onStart();
            //输出日志
            Log.d(TAG, "------------onStart--------------");
        }
    
        @Override
        protected void onRestart() {
            // TODO Auto-generated method stub
            super.onRestart();
            //输入日志
            Log.d(TAG,"---------------onRestart-------------");
        }
    
        @Override
        protected void onResume() {
            // TODO Auto-generated method stub
            super.onResume();
            //输入日志
           Log.d(TAG,"---------------onResume-------------");
        }
    
        @Override
        protected void onPause() {
            // TODO Auto-generated method stub
            super.onPause();
            //输入日志
               Log.d(TAG,"---------------onPause-------------");
        }
        
        
    
        @Override
        protected void onStop() {
            // TODO Auto-generated method stub
            super.onStop();
            //输入日志
               Log.d(TAG,"---------------onStop-------------");
        }
    
        @Override
        protected void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
            //输入日志
               Log.d(TAG,"---------------onDestroy-------------");
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.lifecycle, menu);
            return true;
        }
    
    }
  • 相关阅读:
    页面小标签
    mysql 给表和字段加注释
    jackson中的@JsonBackReference
    spring boot 学习
    bootstrapTable 学习使用
    $.ajax()方法详解
    2020全新出发,DevExpress WPF 计划发布功能蓝图—Part 5
    Web UI开发神器—Kendo UI for jQuery数据管理之搜索/分页功能
    Winforms界面开发小技巧揭秘!DevExpress 自动建议功能
    Themes、Windows UI控件新玩法—DevExpress WPF v19.2
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3420282.html
Copyright © 2011-2022 走看看