Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai
联系方式:JohnTsai.Work@gmail.com
[Android四大组件学习系列Activity篇]
1.Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
2.Android四大组件之——Activity的生命周期(图文详解)
上一篇文章讲了Activity的定义、状态和后退栈,现在讲讲Activity的重点和难点——Activity的生命周期。
- Activity生命周期的回调方法:
//创建Activity public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);} //Activity快要变成可见的 @Overrideprotected void onStart() {super.onStart();} //Activity变成可见的,处于运行状态 @Overrideprotected void onResume() {super.onResume();} //其他Activity获得用户焦点,(Activity快要暂停了) @Overrideprotected void onPause() {super.onPause();} //Activity不再可见,处于停止状态 @Overrideprotected void onStop() {super.onStop();} //Activity快要被销毁了 @Overrideprotected void onDestroy() {super.onDestroy(); }}
下面这张图很好的讲解了Activity的生命周期和上面说的三种生命期:
下面通过一个Demo来学习以下Activity的生命周期:
Demo很简单,就只有两个Activity,MainActivity和SecondActivity和一个按钮。点击按钮,由MainActivity跳转到SecondActivity。
MainActivity:
1 package com.example.activitytest; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget.Button; 10 11 public class MainActivity extends Activity { 12 13 private Button btn; 14 private static final String TAG = "ActivityTest"; 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 Log.d(TAG, "MainActivity onCreate"); 19 setContentView(R.layout.activity_main); 20 btn = (Button)findViewById(R.id.btn); 21 btn.setOnClickListener(new OnClickListener() { 22 23 @Override 24 public void onClick(View v) { 25 Intent intent = new Intent(MainActivity.this,SecondActivity.class); 26 startActivity(intent); 27 } 28 }); 29 30 } 31 @Override 32 protected void onPause() { 33 Log.d(TAG, "MainActivity onPause "); 34 super.onPause(); 35 } 36 @Override 37 protected void onResume() { 38 Log.d(TAG, "MainActivity onResume "); 39 super.onResume(); 40 } 41 @Override 42 protected void onStart() { 43 super.onStart(); 44 Log.d(TAG,"MainActivity onStart "); 45 } 46 @Override 47 protected void onStop() { 48 super.onStop(); 49 Log.d(TAG, "MainActivity onStop "); 50 } 51 @Override 52 protected void onDestroy() { 53 super.onDestroy(); 54 Log.d(TAG, "MainActivity onDestroy "); 55 } 56 @Override 57 protected void onRestart() { 58 super.onRestart(); 59 Log.d(TAG, "MainActivity onRestart "); 60 } 61 }
SecondActivity:
1 package com.example.activitytest; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.Log; 6 7 public class SecondActivity extends Activity { 8 private static final String TAG = "ActivityTest"; 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 setContentView(R.layout.second_layout); 12 super.onCreate(savedInstanceState); 13 Log.d(TAG,"SecondActivity onCreate"); 14 15 } 16 @Override 17 protected void onStart() { 18 super.onStart(); 19 Log.d(TAG, "SecondActivity onStart"); 20 } 21 @Override 22 protected void onResume() { 23 super.onResume(); 24 Log.d(TAG, "SecondActivity onResume"); 25 26 } 27 @Override 28 protected void onPause() { 29 super.onPause(); 30 Log.d(TAG, "SecondActivity onPause"); 31 } 32 @Override 33 protected void onStop() { 34 super.onStop(); 35 Log.d(TAG, "SecondActivity onStop"); 36 } 37 @Override 38 protected void onDestroy() { 39 super.onDestroy(); 40 Log.d(TAG, "SecondActivity onDestroy"); 41 } 42 @Override 43 protected void onRestart() { 44 super.onRestart(); 45 Log.d(TAG, "SecondActivity onRestart"); 46 } 47 }
SecondActivity
使用Activity需要在Manifest.xml文件中注册:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.activitytest" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="8" 9 android:targetSdkVersion="21" /> 10 11 <application 12 android:allowBackup="true" 13 android:icon="@drawable/ic_launcher" 14 android:label="@string/app_name" 15 android:theme="@style/AppTheme" > 16 <activity 17 android:name=".MainActivity" 18 android:label="@string/app_name" > 19 <intent-filter> 20 <action android:name="android.intent.action.MAIN" /> 21 <category android:name="android.intent.category.LAUNCHER" /> 22 23 </intent-filter> 24 </activity> 25 <activity 26 android:name=".SecondActivity" 27 android:label="SecondActivity" 28 android:theme="@android:style/Theme.Dialog" 29 > 30 </activity> 31 </application>
Manifest.xml
1. 运行应用,MainActivity运行。
可以看出一个Activity运行调用的回调方法是:onCreate()->onStart()->onResume()
2. 点击跳转按钮,由MainActivity跳转到SecondActivity:
1>SecondActivity是Dialog。
由于SecondActivity是Dialog,所以MainActivity依然可见,所以只调用了它的onPause()方法。
2>若将SecondActivity改为不是Dialog(只需在Manifest.xml文件中删掉 android:theme="@android:style/Theme.Dialog"这一行即可)
再点击跳转按钮:
对于MainActivity,由于不可见,状态由运行变为停止。
依次调用了它的回调方法:onPause()->onStop()
3.Activity处于运行状态时,点击返回按钮。
点击返回按钮,Activity由运行状态变为死亡状态,依次调用它的回调方法:onPause()->onStop()->onDestroy()
4.Activity处于运行状态,点击主页按钮,返回桌面。
Activity由运行状态变为停止状态,依次调用它的回调方法:onPause()->onStop()
5.Activity处于停止状态,即由桌面返回到Activity。
停止->运行,依次调用回调方法:onRestart()->onStart()->onResume()
6.Activity处于运行状态,旋转屏幕:
可以看出,旋转屏幕是一个销毁Activity然后重新创建Activity的过程。
运行->暂停->停止->死亡->运行
依次调用回调方法:onPause()->onStop->onDestroy()->onCreate()->onStart()->onResume()
7.Activity处于运行状态,手机此时锁屏。
可以看出,手机锁屏,此时由于Activity不可见,会进入停止状态。
依次调用回调方法:onPause()->onStop()
8.当应用正在运行时,手机锁屏,然后解锁回到应用界面。
可以看出应用从停止状态恢复到运行状态。
依次调用回调方法:onRestart()->onStart()->onResume()
本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论。
欢迎转载,转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai
如果喜欢,请点推荐!谢谢~
Android四大组件之——Activity的生命周期(图文详解)相关推荐
- 重温Android四大组件(一)—Activity的生命周期
前言 四大组件对于Android开发者是老生常谈的知识了,相信每个Android开发者对四大组件都已经很熟悉了.但是四大组件作为Android应用的基础,作为开发者不仅要熟悉而且要烂熟于心. 这里以& ...
- Android四大组件之一Activity的生命周期
Activity的七大生命周期 onCrate 不可见不可交互. onStart 可见不可交互 . onResume 可见可交互 . onPause 可见不可交互 .onStop 不可见不可交互 . ...
- android 屏幕横竖屏切换时生命周期运行详解,创建横屏layout,has no declaration in the base
横屏代码 1.配置文件设置 android:screenOrientation="landscape" 2.java代码设置 setRequestedOrientation(Act ...
- Android四大组件之Activity(第一篇-简单使用)
Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...
- Android实验二:Activity的生命周期
要求 设计如下界面,包括四个按钮,两个文本框.单击对应按钮可以启动对应activity.假 定Activity A为启动Activity. 部分代码 import androidx.appcompat ...
- Vue的生命周期过程详解
Vue的生命周期 Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.销毁等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的 ...
- android代码查找快捷键是什么,Android Studio搜索功能(查找功能)及快捷键图文详解(示例代码)...
1.在当前窗口查找文本[Ctrl+F] F3 向下查找关键字出现位置 Shift+F3 向上一个关键字出现位置 2.在当前工程内查找文本[Ctrl+Shift+F] 先会弹出一个对话框,直接点击[fi ...
- 【Android 四大组件之Activity】一文吃透Activity 生命周期
作者:半身风雪 简介:在Android组件中最基本也是最为常见的四大组件: Activity Service服务 Content Provider内容提供者 BroadcastReceiver广播接收 ...
- Android组件系列----Activity的生命周期
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
最新文章
- 图像处理中的Mask是什么
- 小甲鱼python视频解读_小甲鱼python视频弟十二讲(关于字符串的方法及注释下)...
- 电信申请固定ip_各个代理ip之间的关系
- 取文字_把这4个字母输入word,会得到一段神秘文字,承载着一段历史
- 实战:MongoDB 分片集群Shard Cluster 搭建(1台路由节点,3台配置节点,9台分片节点)
- 又见程序媛 | 从索引的创建角度分析热门“面试题”
- 安全中心登录_放心使用instagram需要做到的5个信息安全设置
- 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?...
- 数字图像处理与分析(matlab实现)——实现空域线性及非线性低通平滑滤波
- 数据结构个人电话号码查询系统实验报告
- “0基础考生考前三小时突破《申论》80分气哭学霸”——公文题(公文基础理论+方案类+总结类)
- aliyun短信及短信模板操作
- ARM汇编中的:比较指令--CMN / CMP / TEQ / TST
- python星星排列_python中怎么实现星星排列
- linux版本、查找、重启等命令
- 画论88 高秉《指头画说》
- 崔辰州:“数据驱动的天文科普”人生
- CSS和HTML做的二次元薇尔莉特(伪),新手上路,请多关照!!!!
- 连锁药店现状和信息化建设思路
- C - Anu Has a Function(div2)