activity生命周期

源码解析Android架构组件ViewModel

匿名 (未验证) 提交于 2019-12-03 00:38:01
ViewModel 是google官方的MVVM架构组件,目前已经集成到了最新的支持库中了,是MVVM架构的核心组件之一。不懂MVVM的请看之前的文章: (一)Android官方MVVM框架实现组件化之整体结构 网上看到的ViewModel的博文千篇一律,实在忍不了,自己写看了源码写了一篇,欢迎拍砖! ViewModel是存储UI相关数据并不会因为旋转而销毁的类。 最为重要的就是ViewModel具有下面的生命周期,这就是ViewModel的最可贵之处: 正因为ViewModel有如此的生命周期,所以ViewModel在MVVM可以作为数据存储区,是连接View和Model重要组件,ViewModel的核心作用如下图所示: 1.ViewModel是怎么创建的? 2.ViewModel是怎么存储的? 3.ViewModel为什么可以实现旋转屏幕不销毁? 先放简单讲一下 ViewModel 的基本使用方法,我们在获取 ViewModel 的时候绝对不能直接使用 new 关键字去创建,需要使用 ViewModelProviders 去使用系统提供的反射方法去创建我们想要的 ViewModel ,下面是官方架构组件android.arch.lifecycle包下面的 ViewModelProviders 工具类用来获取ViewModel: /** * 注解by danxx on 2018

源码解析Android架构组件ViewModel

匿名 (未验证) 提交于 2019-12-03 00:37:01
ViewModel 是google官方的MVVM架构组件,目前已经集成到了最新的支持库中了,是MVVM架构的核心组件之一。不懂MVVM的请看之前的文章: (一)Android官方MVVM框架实现组件化之整体结构 网上看到的ViewModel的博文千篇一律,实在忍不了,自己写看了源码写了一篇,欢迎拍砖! ViewModel是存储UI相关数据并不会因为旋转而销毁的类。 最为重要的就是ViewModel具有下面的生命周期,这就是ViewModel的最可贵之处: 正因为ViewModel有如此的生命周期,所以ViewModel在MVVM可以作为数据存储区,是连接View和Model重要组件,ViewModel的核心作用如下图所示: 1.ViewModel是怎么创建的? 2.ViewModel是怎么存储的? 3.ViewModel为什么可以实现旋转屏幕不销毁? 先放简单讲一下 ViewModel 的基本使用方法,我们在获取 ViewModel 的时候绝对不能直接使用 new 关键字去创建,需要使用 ViewModelProviders 去使用系统提供的反射方法去创建我们想要的 ViewModel ,下面是官方架构组件android.arch.lifecycle包下面的 ViewModelProviders 工具类用来获取ViewModel: /** * 注解by danxx on 2018

Activity 初步(大部分翻译自SDK)

妖精的绣舞 提交于 2019-12-02 17:45:58
(内容:如何创建、使用activity; activity生命周期。) Activity Activity 是一个为用户提供交互接口的组件,每个 activity 都会有一个 window 来显示自己的界面。 应用可以由多个互相“弱关联”的 activity 组成, activity 可以启动另外一个 activity , 有 activity 启动的时候,当前的就会被暂停,系统把被暂停的 activity 存储在一个 FILO (先进后出)的栈中,当用户点击“ back ”时,位于栈顶的 activity 就会重新被显示出来。 Activity 提供一系列的接口,在生命周期运行到特定的阶段时会通知相应的接口,用户在这些回调接口中做当前阶段的处理。例如,在 create 时初始化应用的资源, stop 时作资源的释放。 1 创建 Activity 创建一个 activity 必须继承为 Activity 的子类,并覆盖所需要生命周期的回调方法。比较重要的 2 个方法: onCreate(): 系统在创建 activity 时会调用,必须要覆盖的方法。应该在此阶段做初始化工作,layout一定要在这里被初始化:调用 setContentView() 设置 activity 的界面。 onPause(): 用户离开这个 activity 时系统调用的第一个方法

Android初级开发笔记 -- 关于Fragment的回退栈

走远了吗. 提交于 2019-12-02 10:46:50
一直想好好研究一下项目中经常用到的Fragment。这篇先记录一下对Fragment的回退栈的学习。 文章目录 一、什么是Fragment 二、Fragment的生命周期 三、实例讲述Fragment回退栈 区别 总结 四、结语 一、什么是Fragment Fragment是Android3.0之后引入的可嵌入activity中的碎片化组件,实现了界面的最大化利用。有以下几个特点: (1)不可独立存在,但是有自己的生命周期。不过因为与activity关联在一起,生命周期会受activity影响。 (2) 可静态引入也可动态加载。推荐使用support-v4中的android.support.v4.app.Fragment而非系统内置的android.app.Fragment。因前者能让Fragment在所有Android系统版本中保持功能一致性。 二、Fragment的生命周期 先po一张经典生命周期图: 我们可以看到有几个关键的回调方法。 onAttach() Fragment和Activity建立关联的时候调用(获得activity的传递的值) onCreateView() 为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局) onActivityCreated() 当Activity中的onCreate方法执行完后调用

Acitivty生命周期

时光总嘲笑我的痴心妄想 提交于 2019-12-01 19:37:51
Acitivty 有七个生命周期: onCreate: 当第一次调用一个Activity就会执行onCreate方法 onStart: 当Activity处于可见状态的时候就会调用onStart方法 onResume: 当Activity可以得到用户焦点的时候就会调用onResume方法,由被覆盖状态回到前台或解锁屏调用此方法。 onRestart: 当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法 onPause: 当Activity被遮挡住的时候就会调用onPause方法,暂停当前activity。 onStop: 当Activity处于不可见状态的时候就会调用onStop方法 onDestory: 当Activity被销毁时会调用onDestory方法 环境:一共两个页面,A,B A页面有一个button点击之后打开B页面 activity启动的时候: onCreate ---> onStart ---> onResume ,打开A页面:启动时调用,可见状态调用,获取焦点调用。 点击button后打开B页面此时A页面的状态是: onPause---> onStop, 首先暂停A页面activity,然后对B页面的activity执行上面的三步,然后对A页面进行停止操作。 当按返回键时: onRestart--->onStart---

Service的生命周期与Activity生命周期区别

随声附和 提交于 2019-12-01 16:44:04
碰到一面试题 简述 activity/service生命周期 ? 组件的生命周期 应用程序组件都有一个生命周期,从响应Intent的Android实例开始到这个实例被销毁。在这期间,他们或许有效或许无效,有效时或许对用户可见或许不可见。下面我们就来讨论四个基本组件的生命周期,包括在生命周期内的各种状态,以及状态之间的转换。这几种状态可能的结果是:进程让他们停止, 然后实例被销毁。 一、activity生命周期 一个activity有三个基本的状态: @ 当activity在前台运行时(在activity当前任务的堆栈顶),为活动或者运行状态。这时activity会响应用户的操作。 @ 当activity失去焦点但是对用户仍然可见时为paused暂停状态。此时,别的activity在他的上面,透明或者备有被全部覆盖。所以其中一些暂停的activity也可以被显示。一个暂停的activity是处于活动状态的(他维护着所有的状态保存着信息,并且依然附着在窗口管理器)。 @ 如果一个activity完全被另一个activity所掩盖那他会处于stop状态。但仍然保存着原来的状态和信息。然而,如果别的地方需要更多的内存而且这个activity仍一直处于隐藏状态,那么系统有可能会杀死他的进程。 如果一个activity是暂停或者停止状态,系统可以清理他们占用的内存,或者调用finish()方法

android Fragments详解六:处理fragement的生命周期

橙三吉。 提交于 2019-12-01 13:59:19
把条目添加到动作栏 你的 fragment 们可以向 activity 的菜单(按 Manu 键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法 onCreateOptionManu() 来完成。 你从 fragment 添加到菜单的任何条目,都会出现在现有菜单项之后。 Fragment 之后可以通过方法 onOptionsItemSelected() 来响应自己的菜单项被选择的事件。 你也可以在 fragemnt 中注册一个 view 来提供快捷菜单(上下文菜单)。当用户要打开快捷菜单时, fragment 的 onCreateContextMenu() 方法会被调用。当用户选择其中一项时, fragemnt 的 onContextItemSelected() 方法会被调用。 注:尽管你的 fragment 可以分别收到它所添加的菜单项的选中事件,但是 activity 才是第一个接收这些事件的家伙,只有当 activity 对某个事件置之不理时, fragment 才能接收到这个事件,对于菜单和快捷菜单都是这样。 处理 fragement 的生命周期 管理 fragment 的生命周期有些像管理 activity 的生命周期。 Fragment 可以生存在三种状态: Resumed: Fragment 在一个运行中的 activity

Activity的生命周期【翻译】

青春壹個敷衍的年華 提交于 2019-12-01 09:31:07
在android系统中用activity栈来管理启动的Activity。每次启动一个新的Activity,它会被置于栈顶,而且成为当前活动窗口,原来的Activity还保留在栈中,在当前新启动的窗口下面,并且在新的窗口关闭之前,不会再出现给用户看到。 在android系统中用activity栈来管理启动的Activity。每次启动一个新的Activity,它会被置于栈顶,而且成为当前活动窗口,原来的 Activity还保留在栈中,在当前新启动的窗口下面,并且在新的窗口关闭之前,不会再出现给用户看到。 Activity有四个状态: 1)如果Activity是当前窗口,并且在Activity栈顶,状态为running。 2)如果Activity已经失去了焦点,不再是当前窗口,但是依然可以看到(这种状态可以出现在,新建立的窗口是对话框式等不占全屏的窗口时), 状态为paused。这个状态下的Activity依然是活跃的(它维护所有状态,记录信息并且和窗口管理服务保持关联),但是在系统存储空间极限时可 以被销毁。 3)如果Activity的窗口被新建立的窗口完全遮住,状态为stopped。它依旧维持各种状态,记录信息,但是它不再为用户可见(如果用户使用物理 键盘返回键,那么当前窗口从running状态,经过onPause(),onStop(),onDestroy()被销毁

activity生命周期

梦想的初衷 提交于 2019-11-30 13:26:22
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/xiajun2356033/article/details/78741121 activity生命周期(这篇足够了) 摘要 做安卓开发已经4年多了,所接触的知识点也比较零散,在这里记录一下android方面的知识点,方便自己以后复习,有什么不足的,以及错误的欢迎拍砖。 activity activity从开始到结束的四个状态。 activity的生命周期。 activity的进程优先级。 activity的四个状态 关于activity的四个状态: running-poused-stopped-killed running->当前显示在屏幕的activity(位于任务栈的顶部),用户可见状态。 poused->依旧在用户可见状态,但是界面焦点已经失去,此Activity无法与用户进行交互。 stopped->用户看不到当前界面,也无法与用户进行交互 完全被覆盖. killed->当前界面被销毁,等待这系统被回收 关于activity四个状态所在的生命周期: 由上图我们得知: Starting ——–>Running 所执行的生命周期顺序 onCreate()->onstart()->onResume() 当前称为活动状态

Activity生命周期

做~自己de王妃 提交于 2019-11-30 08:50:37
子曰:溫故而知新,可以為師矣。《論語》 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精髓。 近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下。 熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适 的时间被servlet容器调用。其实android中的Activity运行机制跟servlet有些相似之处,Android系统相当于 servlet容器,Activity相当于一个servlet,我们的Activity处在这个容器中,一切创建实例、初始化、销毁实例等过程都是容器 来调用的,这也就是所谓的“Don't call me, I'll call you.”机制。 我们来看一下这一张经典的生命周期流程图: 相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程。 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。 2