热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[android]activity的生命周期

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

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有个对话框的选项,在清单文件中,给节点添加主题属性

设置主题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;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);System.out.println("onCreate");}//提示对话框
@Overrideprotected void onStart() {super.onStart();System.out.println("onStart");AlertDialog.Builder builder=new Builder(this);builder.setTitle("提示");builder.setMessage("我是一个好人");builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "yes是的", 0).show();}});builder.create().show();}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();System.out.println("onResume");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();System.out.println("onPause");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();System.out.println("onStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();System.out.println("onDestroy");}
}

 


推荐阅读
author-avatar
神马26688_463
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有