activity生命周期

AndroidManifest.xml

ぃ、小莉子 提交于 2020-03-18 08:28:40
<activity> 中:    android:name="" //对应的java文件    android:configChanges=""     对 Android :configChanges属性,一般认为有以下几点:       1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次       2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次       3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法     但是,自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和

Glide源码解析一,初始化

爱⌒轻易说出口 提交于 2020-03-05 20:08:19
转载请标明出处: https:////www.cnblogs.com/tangZH/p/12409849.html Glide作为一个强大的图片加载框架,已经被android官方使用,所以,明白Glide的加载流程以及原理对加深我们对glide的理解是很重要的。 本文基于glide 4.11 Glide.with(this).load("").into(new ImageView(this)); 我们从这一句入手,先看看Glide的初始化过程,也就是Glide.with(this)这个方法。 一、单例实例化 可以看到里面有多个重载方法,最常用的是这个,这些方法最终返回的是 RequestManager 。 都一致调用了 getRetriever(...).get(view) 。 我们看一下 getRetriever(...) 里面做了什么。 getRequestManagerRetriever()返回的是一个RequestManagerRetriever,我们主要看的是Glide.get(context) 可以看到Glide.get(context)里面进行了初始化的操作,它是我们熟悉的单例模式。最终会调用 二、GlideModule配置加载 上面的get方法中,我们需要注意这一句: GeneratedAppGlideModule annotationGeneratedModule

android 生命周期图

自闭症网瘾萝莉.ら 提交于 2020-02-18 07:29:01
Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在onCreate()中设置所有“ 局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如,如果Activity有一个线程在后台运行从网络上下载 据,它会在onCreate()创建线程,而在 onDestroy()销毁线程。 Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity, 管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需 源。例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的 化,而在onStop()中来注消。onStart() 和 onStop() 方法可以随着应用程序是否为用户可见而被多次调用。 Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用 进行交互。Activity会经常在暂停和恢复之间进行状态转换——例如:当设备转入休眠状态或者有新的Activity启动时,将调 onPause() 方法

android 架构组件 - viewmodel

匆匆过客 提交于 2020-02-10 00:26:45
ViewModel 类旨在以生命周期的方式存储和管理与ui相关的数据。 ViewModel 类允许数据在诸如屏幕旋转之类的配置更改中存活。 注意:要将ViewModel导入到您的Android项目中,请参见 向您的项目添加组件 。 Android框架管理UI控制器的生命周期,比如activities和fragments。 该框架可能会决定销毁或重新创建UI控制器,以响应完全超出您控制的某些用户操作或设备事件。 如果系统破坏或重新创建一个UI控制器,那么存储在其中的任何与UI相关的数据都将丢失。 例如,你的应用可能会在其中一个activity中包含一个用户列表。 当为配置更改重新创建activity时,新activity必须重新获取用户列表。 对于简单的数据,该activity可以使用 onSaveInstanceState() )方法,并从 onCreate() )中的bundle中恢复其数据,但是这种方法只适用于少量的数据,这些数据可以序列化然后反序列化,而不是像用户列表或位图那样的潜在的大量数据。 另一个问题是UI控制器经常需要进行异步调用,这可能需要一些时间才能返回。 UI控制器需要管理这些调用,并确保系统在被销毁后清除它们,以避免潜在的内存泄漏。 这种管理需要大量的维护,并且在为配置更改重新创建对象的情况下,由于对象可能不得不重新发出已经发出的调用,这是对资源的浪费。

Android基础面试题

最后都变了- 提交于 2020-01-30 01:54:15
1. 请描述一下Activity 生命周期。 答: 如下图所示。共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。 onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问。 onStart(): Activity变为在屏幕上对用户可见时调用。 onResume(): Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用。 onPause(): Activity被暂停或收回cpu和其他资源时调用,该方法用户保护活动状态的,也是保护现场。 onStop(): Activity被停止并转为不可见阶段及后续的生命周期事件时调用。 onRestart(): Activity被重新启动时调用。该活动仍然在栈中,而不是启动新的Activity。 1、完整生命周期: 即从一个Activity从出现到消失,对应的周期方法是从onCreate()到onDestroy()。 2、可见生命周期: 当Activity处于可以用户看见的状态,但不一定能与用户交互时,将多次执行从onStart()到onStop()。 3、前景生命周期:

Android Jetpack系列——ViewModel源码分析

人走茶凉 提交于 2020-01-28 21:10:24
本文章已授权微信公众号郭霖(guolin_blog)转载。 本文章主要是对 ViewModel 进行源码分析,建议对着 示例代码 阅读文章, 示例代码 如下: ViewModelDemo 本文章使用的是 Android SDK 29 的源码分析。 定义 Android框架管理 UI控制器的生命周期 (例如: Activity 和 Fragment ), Framework 可能决定 销毁 或者 重新创建一个UI控制器 ,以响应某些用户操作或者设备事件,这些操作或者事件完全超出你的控制。 如果系统 销毁 或者 重新创建一个UI控制器 ,那么你存储在其中的任何 与UI相关的临时数据 都 丢失 ,例如:你的应用程序在某个 Activity 中包含一个用户列表,当 配置信息 更改重新创建 Activity 时,新的 Activity 必须重新获取用户列表。对于简单数据, Activity 可以使用 onSaveInstanceState() 方法,并且在 onCreate() 方法中从 Bundle 中恢复数据,但是这种方法只适用于 少量的、可以序列化和反序列化的数据 ,而不是 潜在的大量数据的用户列表 或者是 很多的Bitmap 。 另外一个问题是 UI控制器 经常需要进行 异步调用 ,这可能需要一些时间才能返回, UI控制器 需要管理这些调用,并确保系统在 销毁 后对其进行清理,以避免

Android生命周期

若如初见. 提交于 2020-01-24 05:17:37
在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的。当一个程序或其某些部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就“死亡”了。可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制。这和我们编写桌面应用程序时的思维有一些不同,一个桌面应用程序的进程也是在其他进程或用户请求时被创 建,但是往往是在程序自身收到关闭请求后执行一个特定的动作(比如从 main 函数中 return)而导致进程结束的。要想做好某种类型的程序或者某种平台下的程序的开发,最关键的就是要弄清楚这种类型的程序或整个平台下的程序的一般工作 模式并熟记在心。在 Android 中,程序的生命周期控制就是属于这个范畴——我的个人理解:) 在 Android 系统中,当某个 activity调用 startActivity(myIntent) 时,系统会在所有已经安装的程序中寻找其 intent filter 和 myIntent 最匹配的一个 activity,启动这个进程,并把这个 intent 通知给这个 activity。这就是一个程序的“生”。比如我们在 Home application 中选择 “Web browser”,系统会根据这个 intent 找到并启动 Web browser

android开发之三:Activity的生命周期:onCreate()和onStart()

南楼画角 提交于 2020-01-20 16:43:56
***onCreate()*** 在第一次创建活动时调用。这是您应该完成所有常规静态设置的位置:创建视图,将数据绑定到列表等。此方法还会为您提供一个包含活动先前冻结状态(如果有的话)的Bundle。总是跟着onStart()。 ***onStart()*** 当活动对用户变得可见时调用。如果活动进入前台,则跟随onResume(),如果隐藏,则执行onStop()。 这些方法调用时,你可以编写简单的类来查看。 onCreate() 方法在创建活动时被调用,并且在整个活动生命周期中仅调用一次。在 onStart() 活动停止时被调用的地方......我的意思是它已经到了后台,它的 onStop() 方法被os调用。 onStart() 可能会在活动生命周期中多次调用。 来源: CSDN 作者: 隨意的風 链接: https://blog.csdn.net/Windgs_YF/article/details/104050847

Activity生命周期

北慕城南 提交于 2020-01-08 21:24:06
本篇博客是个备忘录,是我工作中遇到的生命周期方法调用的一些总结。 讲Activity的声明周期之前,先讲讲Actiivty的启动模式。其与Activity的声明周期和启动流程息息相关。 四大启动模式 1、Standard 模式 默认启动模式,每次启动一个activity都会重新创建一个新的实例,放入栈顶。因此启动时 onCreate、onStart、onResume 方法都会被调用。 // 伪代码 // 标准模式:走onCreate ---> onStart ---> onResume if(isStandard) { // 创建新的Activity实例 createNewActivity(); } 2、singleTop模式 singleTop模式,又叫栈顶复用模式,当前栈中已有该activity实例并且该实例位于栈顶,复用该activity,调用onNewIntent,onResume方法;其他都是重新创建实例。走 onCreate、onStart、onResume 流程。 // 伪代码 if(isStackTop) { // 已存在实例并且在任务栈栈顶,复用当前实例,走 onNewIntent ---> onResume reuseExistActivity(); } else { // 创建新的Activity实例,走onCreate ---> onStart --->

Android 架构组件之 Lifecycle

坚强是说给别人听的谎言 提交于 2019-12-31 20:53:17
文章目录 1. 为什么要使用 Lifecycle? 1.1 在 Lifecycle 出现之前,实现 Activity 与 Presenter 的绑定 1.2 使用 Lifecycle 完成 Activity 与 Presenter 的绑定 2. 分析 Lifecycle 的组成及实现原理 2.1 Lifecycle 在 Activity 中的使用 2.2 Lifecycle 在 Fragment 中的使用 3. 总结一下 Lifecycle 的使用 参考链接 Lifecycle 是 Google 给出的架构组件之一,它能够感知具有生命周期的组件(如 Activity 和 Fragment)的生命周期变化。本文将从以下几个方面对 Lifecycle 进行介绍: 为什么要使用 Lifecycle? 分析 Lifecycle 的组成及实现原理; 总结一下 Lifecycle 的使用 1. 为什么要使用 Lifecycle? Lifecycle 能够感知具有生命周期的组件(如 Activity 和 Fragment)的生命周期变化, 使用 Lifecycle 可以避免编写模板代码,同时生成组织性更好,更便于维护的代码。这是 Lifecycle 的特点,下面将从实际开发中的一个案例,来介绍为什么要使用 Lifecycle。 1.1 在 Lifecycle 出现之前,实现 Activity 与