1. Android App的生命周期;

2. Application的生命周期;

3. Activity的生命周期;

3.1 Fragment的生命周期;

4. Service的生命周期;
5. BroadcastReciver的生命周期;
6. ContentProvider的生命周期;

7. View的生命周期;

-----------------------------------------------------------------

2. Application的生命周期;

public class App extends Application {

    @Override
public void onCreate() {
// 程序创建的时候执行
Log.d(TAG, "onCreate");
super.onCreate();
}
@Override
public void onTerminate() {
// 程序终止的时候执行
Log.d(TAG, "onTerminate");
super.onTerminate();
}
@Override
public void onLowMemory() {
// 低内存的时候执行, 资源匮乏的时候
Log.d(TAG, "onLowMemory");
super.onLowMemory();
}
@Override
public void onTrimMemory(int level) {
// 程序在内存清理的时候执行
Log.d(TAG, "onTrimMemory");
super.onTrimMemory(level);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.d(TAG, "onConfigurationChanged");
super.onConfigurationChanged(newConfig);
} }

onTerminate 有点特殊,不管我怎么试都不会被调用, 下面是网上的一种解释

onTerminate 当终止应用程序对象时调用,不保证一定被调用,当程序是被内核终止以便为其他应用程序释放资源,那么将不会提醒,并且不调用应用程序的对象的onTerminate方法而直接终止进程

还是没有说明什么时候会被调用, 读源码去

95    /**
96 * This method is for use in emulated process environments. It will
97 * never be called on a production Android device, where processes are
98 * removed by simply killing them; no user code (including this callback)
99 * is executed when doing so.
100 */
101 public void onTerminate() {
102 }
103

就是这样了.

3. Activity的生命周期;

这个东西都说烂了, 一张图说明一切

文章请读: Activity生命周期回顾

以下是log

11-06 22:49:27.959    2872-2872/? D/CARLOZ123-MyApplication﹕ onCreate
11-06 22:49:28.176 2872-2872/? D/CARLOZ123-MainActivity﹕ onCreate
11-06 22:49:28.237 2872-2872/? D/CARLOZ123-MainActivity﹕ onStart
11-06 22:49:28.270 2872-2872/? D/CARLOZ123-MainActivity﹕ onResume
转屏
11-06 22:49:43.759 2872-2872/? D/CARLOZ123-MyApplication﹕ onConfigurationChanged
11-06 22:49:43.770 2872-2872/? D/CARLOZ123-MainActivity﹕ onPause
11-06 22:49:43.771 2872-2872/? D/CARLOZ123-MainActivity﹕ onSaveInstanceState protected
11-06 22:49:43.771 2872-2872/? D/CARLOZ123-MainActivity﹕ onStop
11-06 22:49:43.771 2872-2872/? D/CARLOZ123-MainActivity﹕ onDestroy
11-06 22:49:43.839 2872-2872/? D/CARLOZ123-MainActivity﹕ onCreate
11-06 22:49:43.848 2872-2872/? D/CARLOZ123-MainActivity﹕ onStart
11-06 22:49:43.849 2872-2872/? D/CARLOZ123-MainActivity﹕ onRestoreInstanceState protected
11-06 22:49:43.849 2872-2872/? D/CARLOZ123-MainActivity﹕ onResume
按返回键, 自动转为竖屏
11-06 22:50:04.000 2872-2872/? D/CARLOZ123-MainActivity﹕ onPause
11-06 22:50:04.238 2872-2872/? D/CARLOZ123-MyApplication﹕ onConfigurationChanged
11-06 22:50:04.527 2872-2872/? D/CARLOZ123-MyApplication﹕ onTrimMemory
11-06 22:50:04.527 2872-2872/? D/CARLOZ123-MainActivity﹕ onStop
11-06 22:50:04.527 2872-2872/? D/CARLOZ123-MainActivity﹕ onDestroy

3.1 Fragment的生命周期;

参考: Android Fragment基础及使用

01-02 13:35:23.059: D/LifeCycleActivity-Fragment(28235): onCreate
01-02 13:35:23.079: D/FragmentA(28235): onAttach
01-02 13:35:23.079: D/FragmentA(28235): onCreate
01-02 13:35:23.089: D/FragmentA(28235): onCreateView
01-02 13:35:23.089: D/FragmentA(28235): onActivityCreated
01-02 13:35:23.089: D/FragmentA(28235): onStart
01-02 13:35:23.089: D/LifeCycleActivity-Fragment(28235): onStart
01-02 13:35:23.089: D/LifeCycleActivity-Fragment(28235): onResume
01-02 13:35:23.089: D/FragmentA(28235): onResume
01-02 13:43:12.629: D/LifeCycleActivity-Fragment(28235): onPause
01-02 13:43:12.629: D/FragmentA(28235): onPause
01-02 13:43:12.939: D/LifeCycleActivity-Fragment(28235): onStop
01-02 13:43:12.939: D/FragmentA(28235): onStop
01-02 13:43:12.939: D/LifeCycleActivity-Fragment(28235): onDestroy
01-02 13:43:12.939: D/FragmentA(28235): onDestroyView
01-02 13:43:12.939: D/FragmentA(28235): onDestroy
01-02 13:43:12.939: D/FragmentA(28235): onDetach

4. Service的生命周期;

参考: http://www.cnblogs.com/mengdd/archive/2013/03/24/2979944.html

启动service有两种方法:
      1.    Context.startService()
             调用者(Client)与服务端(Server)之间没有关联,即使调用者退出,服务仍可运行。
      2.    Context.bindService()
             调用者(Client)与服务端(Server)绑定在一起,可以多个调用者(Client)绑定一个服务端(Server),当所有的调用者(Client)退出,服务端(Server)也就终止。

Service的生命周期:

1.    被启动的服务(startService())的生命周期。
             如果一个Service被某个Activity 调用Context.startService() 方法启动,那么不管是否有Activity使用bindService()绑定或unbindService()解除绑定到该Service,该Service都在后台运行。如果一个Service被多次执行startService(),它的onCreate()方法只会调用一次,也就是说该Service只会创建一个实例,而它的onStartCommand()将会被调用多次(对应调用startService()的次数)。该Service将会一直在后台运行,直到被调用stopService(),或自身的stopSelf方法。当然如果系统资源不足,系统也可能结束服务。
      2.    被绑定的服务(bindService())的生命周期。
             如果一个Service被调用 Context.bindService ()方法绑定启动,不管调用bindService()调用几次,onCreate()方法都只会调用一次,而onStartCommand()方法始终不会被调用,这时会调用onBind()方法。当连接建立之后,Service将会一直运行,除非调用Context.unbindService() 断开连接或者之前调用bindService() 的 Context 不存在了(如该Activity被finish),系统将会自动停止Service,对应onDestroy()将被调用。
      3.    被启动又被绑定的服务的生命周期。
             如果一个Service又被启动又被绑定,则该Service将会一直在后台运行。调用unbindService()将不会停止Service,而必须调用stopService()或Service的stopSelf()方法来停止服务。
      4.   当服务被停止时清除服务。
            当一个Service被终止时,Service的onDestroy()方法将会被调用,在这里应当做一些清除工作,如停止在Service中创建并运行的线程等

5. BroadcastReciver的生命周期;

子类需要实现onRecive方法,生命周期只能持续10s左右, 不适合做耗时操作

public class MyReciver extends BroadcastReceiver {

    @Override
public void onReceive(Context context, Intent intent) { } }

6. ContentProvider的生命周期;

子类必须实现的是onCreate, 生命周期函数只有onCreate

public class FirstProvider extends ContentProvider {

    @Override
public boolean onCreate() {
return false;
}

7. View的生命周期;

onFinishInflate() 当View中所有的子控件均被映射成xml后触发
onMeasure( int , int ) 确定所有子元素的大小
onLayout( boolean , int , int , int , int ) 当View分配所有的子元素的大小和位置时触发
onSizeChanged( int , int , int , int ) 当view的大小发生变化时触发
onDraw(Canvas) view渲染内容的细节
onKeyDown( int , KeyEvent) 有按键按下后触发
onKeyUp( int , KeyEvent) 有按键按下后弹起时触发
onTrackballEvent(MotionEvent) 轨迹球事件
onTouchEvent(MotionEvent) 触屏事件
onFocusChanged( boolean , int , Rect) 当View获取或失去焦点时触发
onWindowFocusChanged( boolean ) 当窗口包含的view获取或失去焦点时触发
onAttachedToWindow() 当view被附着到一个窗口时触发
onDetachedFromWindow() 当view离开附着的窗口时触发,Android123提示该方法和 onAttachedToWindow() 是相反的。
onWindowVisibilityChanged( int ) 当窗口中包含的可见的view发生变化时触发

Android内的生命周期整理的更多相关文章

  1. 重温Android和Fragment生命周期

    重温下Android和Fragment生命周期,理解生命周期方法的作用,什么时候调用,可以做一些什么操作. 1.Android生命周期 1.1 生命周期图 1.2 生命周期函数说明 onCreate: ...

  2. Android Activity的生命周期简单总结

    Android Activity的生命周期简单总结 这里的内容参考官方的文档,这篇文章的目的不是去总结Activity是如何启动,如何创造,以及暂停和销毁的,而是从实际开发中分析在Activity各个 ...

  3. android开发之生命周期

    android开发之生命周期 一:Activity的生命周期: 这几天了了解了安卓Activity的生命周期,对于生命周期有了大概的理解: 一个Activity的生命周期也就是Activity从生成到 ...

  4. Android开发——Activity生命周期

    Android开发--Activity生命周期 Activity作为四大组件之首,也是使用最频繁的一种组件.本文将主要讲解Activity生命周期,包括正常情况下的Activity生命周期和异常情况下 ...

  5. SpringBoot内置生命周期事件详解 SpringBoot源码(十)

    SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringBoot事件监听 ...

  6. Android:Activity生命周期

    Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack). 栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新 ...

  7. Android活动的生命周期

    掌握活动的生命周期对任何Android开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序. -------------------------------------- ...

  8. android: 服务的生命周期

    9.4   服务的生命周期 之前章节我们学习过了活动以及碎片的生命周期.类似地,服务也有自己的生命周期, 前面我们使用到的 onCreate().onStartCommand().onBind()和 ...

  9. Android编程: Activity生命周期和LogCat使用

    学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建    onCreate重启    onRestart开始    onStart恢复 ...

随机推荐

  1. onethink加密解密函数

    onethink中封装的加密解密函数 <?php /** * 系统加密方法 * @param string $data 要加密的字符串 * @param string $key 加密密钥 * @ ...

  2. Navicat远程连接MySQL数据库

    1.打开Navicat,在界面的“主机名和IP地址”处输入IP地址,一般是192.168.1.1 2.输入相应的用户名和密码,点击连接测试,确认是否已经连接,之后就可以点击确定了 3.找到相应的数据库 ...

  3. mvn开发可执行的java程序

    1.  用maven-assembly-plugin插件 2. 在项目的pom文件中加入以下该插件的配置 <span style="font-size:18px;">& ...

  4. 理解事件捕获。在限制范围内拖拽div+吸附+事件捕获

    一.实现的效果是在限制范围内拖拽div+吸附+事件捕获. 这里需要理解的是事件捕获,这个事件捕获也是为了兼容div在拖拽过程中,文本不被选中这个问题. 如此良辰美景,拖拽也可以很洒脱哈.先看看图, 二 ...

  5. 【转】Android Camera(五)使用Camera功能 AREA的理解

    http://blog.csdn.net/think_soft/article/details/7998478 使用Camera功能 大多数的Camera功能都是使用Camera.Parameters ...

  6. win7下jdk安装环境变量配置

    新本本,新系统,还是得把武器给装配好. 以下图文记录win7系统下的jdk的安装和配置. 1.下载jdk 地址:http://java.sun.com/javase/downloads/index.j ...

  7. Day01 - Python 基础介绍

    1 Python 简介 1.1 Python 的由来 Python的创始人:吉多·范罗苏姆(Guido van Rossum) 1989年,吉多·范罗苏姆为了在阿姆斯特丹打发圣诞节假期时间,开发的一个 ...

  8. 读者汇app项目案例源码

    这款app是我花一周左右时间做出来的,一款阅读笑话,段子,糗事,脑筋急转弯,神回复,语录,谜语等的休闲娱乐app,用户除了可以浏览他人发布的内容外,自己也可以发布相关内容,和其他人一同分享有趣的内容, ...

  9. 复旦大学2016--2017学年第一学期高等代数I期末考试情况分析

    一.期末考试成绩班级前十名 宁盛臻(100).朱民哲(92).徐钰伦(86).范凌虎(85).沈伊南(84).何陶然(84).丁知愚(83).焦思邈(83).董瀚泽(82).钱信(81) 二.总成绩计 ...

  10. 用Eclipse+xdebug调试PHP总是在首行自动断点解决方法

    问题描述: 使用Eclipse+PDT+xdebug调试PHP程序时,总是在程序的第一行(首行)自动断点,不方便调试. 解决方法: 分别在下面3个位置配置,取消 Break at First Line ...