[android] activity的生命周期

MainActivity里面重写以下方法:

在这些方法里面打印log日志,为了方便查看在filter里面增加一个System.out来过滤

onCreate()

 

onDestory()

 

onPause()

 

onResume()

 

onStart()

 

onStop()

 

第一次打开一个activity和关闭时,这个调用顺序onCreate ==> onStart  ==> onResume ==>关闭  ==> onPause  ==> onStop ==> onDestroy

 

 

打开第二个activity的流程,第一个界面的状态  onCreate  ==>  onStart  ==>  onResume  ==> 打开第二个activity  ==>  onPause  ==>  onStop  ==>  关闭第二个  ==>  onStart  ==>  onResume  ==> 关闭第一个  ==>  onPause  ==>  onStop  ==>  onDestroy

 

测试获取焦点和失去焦点,建立第三个Activity,修改样式,在预览界面有一个AppTheme的小控件,里面Theme有个对话框的选项,在清单文件中,给<activity/>节点添加主题属性

设置主题android:theme=”@android:style/Theme.Dialog” 系统R文件的样式,对话框的风格

点击按钮打开这个activity,这时第一个界面会调用 onPause 方法,失去焦点

点击空白部分,第一个界面会得到焦点,onResume 方法

 

生命周期两两对应,可以分为三个,完整生命周期,可视生命周期,前台生命周期,点击后退按钮会销毁activity

 

生命周期的使用场景,数据的持久化,比如在写微博,当用户不小心按了后退按钮,activity会调用onDestroy方法,我们就可以把数据存到文件或者sp里面

当界面从新可见的时候,会调用onStart方法,我们可以做一些界面的更新或者业务逻辑的变化

 

比如:当跳转了activity,要求用户配置某些东西时,用户没有配置就点了返回,这时,我们可以把检测网络的代码写到onStart()方法里面,这样用户体验不好,可以使用对话框

获取AlertDialog.Builder对象,通过new Builder(context)得到,参数:上下文

调用builder对象的setTitle()方法,设置标题

调用builder对象的setMessage()方法,设置内容

调用builder对象的setPositiveButton(text,listener)方法,设置确定按钮,参数:文字,OnClickListener接口对象,通过匿名内部类直接new出来,重写onClick()方法

调用builder对象的create()方法调用show()方法,创建并展示出来

 

package com.tsh.lifecye;

import android.app.Activity;
 android.app.AlertDialog;
 android.app.AlertDialog.Builder;
 android.content.DialogInterface;
 android.content.DialogInterface.OnClickListener;
 android.os.Bundle;
 android.view.Menu;
 android.view.MenuItem;
 android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("onCreate");
    }
    //提示对话框
    @Override
     onStart() {
        .onStart();
        System.out.println("onStart");
        AlertDialog.Builder builder=new Builder(this);
        builder.setTitle("提示");
        builder.setMessage("我是一个好人");
        builder.setPositiveButton("确定",new OnClickListener() {
            
            @Override
            void onClick(DialogInterface dialog,1)">int which) {
                Toast.makeText(MainActivity.this,"yes是的",0).show();
            }
        });
        builder.create().show();
    }

    @Override
     onResume() {
         TODO Auto-generated method stub
        .onResume();
        System.out.println("onResume");
    }

    @Override
     onPause() {
        .onPause();
        System.out.println("onPause" onStop() {
        .onStop();
        System.out.println("onStop" onDestroy() {
        .onDestroy();
        System.out.println("onDestroy");
    }
}

 

相关文章

AdvserView.java package com.earen.viewflipper; import an...
ImageView的scaleType的属性有好几种,分别是matrix(默认)...
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win1...
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由main...
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件...
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项...