技术标签: 问题小结 Android学习之路 Android
近期打算系统的学习和更深入的了解Android,所以新建了这个Android学习之路来记录一下自己对于Android新的认识和了解,也当作是学习的一个记录~
(一)Activity的生命周期和启动模式
(1)Activity的生命周期全面解析
Activity作为四大组件之一,我认为它是最不可忽视的一个,因为在除了Window,Diaog和 Toast,我们能看到的和接触到的的确更多的只有Activity,所以对Activity的认知不止停留于如何启动Activity这一块,我们要学习Activity在使用过程中的一些问题和概念,主要包括生命周期和启动模式,在书中有介绍Activity的生命周期分两种,为典型情况下的生命周期和异常情况下的生命周期,所谓典型情况就是在有用户参与的情况下对Activity一系列的操作引起的Activity生命周期的变化,而异常情况指的是由于当前设备的Configuration(配置)发生改变从而导致Activity被销毁重建。所以异常情况下的生命周期关注点和典型情况下的关注点有所不同。
1.1 典型情况下的生命周期分析
在正常情况下,Activity会经历如下生命周期:
(1)onCreate:表示Activity正在被创建。这是生命周期的第一个方法。在这个方法中可以做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化Activity所需数据等等。
(2)onRestart:表示Activity正在重新启动。很多时候,当当前Activity从不可见重新变为可见状态就会调用onRestart方法,这种情况一般是用户行为所导致的,比如用户按HOME键切换到桌面或者用户打开了一个新的Activity,这时当前的Activity就会暂停,也就是onPause和onStop被执行了,接着用户回到这个Activity,就会调用到onRestart。
(3)onStart:表示Activity正在被启动,即将开始。这时Activity还没出现在前台,但是它已经可见了,只是它还无法和用户交互,可以理解它已经在显示出来的边缘,即将开始,只是我们还看不到它。
(4)onResume:表示Activity已经可见了,并且已经出现在前台,可以和用户进行交互了。(这里顺带提一下,要注意onStart和OnResume的对比,onStart和onResume都表示Activity已经可见了,但是onStart的时候Activity还在后台,onResume的时候Activity才在前台显示出来,要区分好这两种状态的区别。)
(5)onPause:表示Activity正在停止。正常情况下,调用了onPause后onStop会被调用。在这个方法里可以做一些存储数据,停止动画的操作,但是要注意不要太过于耗时,因为会影响到新的Activity的显示速度,在Android的源码中,onPause必须先执行完毕,新Activity的onResume才会被执行。
(6)onStop:表示Activity即将停止。可以做一些稍微重量级的操作,同样注意不要过于耗时。
(7)onDestory:表示Activity即将被销毁。这是Activity生命周期中的最后一个回调方法,通常我们可以在这里做一些资源的释放操作和一些回收工作。
下图可以形象的看出Activity的生命周期活动过程:
另外有几点需要注意的:
(1)在这个图中,一个Activity在第一次启动,回调如下:onCreate-onStart-onResume。
(2)当用户打开一个新的Activity或者切换回到桌面的时候,回调如下:onPause-onStop。但是有几种特殊的情况,会导致当前的Activity不会回调onStop,一个是当Activity被一个透明的Activity覆盖,或者是新Activity使用了透明主题,这时不执行onstop()方法,一个是当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped 状态,还有一个是当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互,所以被覆盖的Activity并不会执行onStop()方法。
(3)当用户重新回到原来的Activity的时候,回调如下:onRestart-onStart-onResume。
(4)当用户按back键回退的时候,回调如下:onPause-onStop-onDestory。
(5)当Activity被系统回收后被再次打开,生命周期的回调与(1)一样,当然只是生命周期方法一样,具体过程不代表都一样~
在实际使用过程中,onStart和onStop是从Activity是否可见这个角度来回调的,而onResume和onPause是从Activity是否处于前台并且可活动可交互的这个角度来回调的,除了这个区别之外在使用过程中没有其他明显的区别。
本人为在校学生,只能一点点慢慢复习积累,内容为手打,目的是为了加强自己的理解,里面也加入了我个人的一些理解,有其他不同的见解或者里面有错误都欢迎指教和指出~
这一节正式的来入门学习一下Spring Cloud 这个微服务框架。本篇是按照我自己的学习思路来编写的入门知识点总结。 一.Spring Cloud 框架概述1.基本介绍2.Spring Cloud与Spring Boot的版本兼容二.Spring Cloud 框架使用1.服务拆分2.案例准备4.微服务远程调用一.Spring Cloud 框架概述1.基本介绍SpringCloud是目前国内使用最广泛的微服务框架之一。官网地址:https://spring.io/projects/spring-.
MacOS小助手中文版包含指令1) 禁用守门员2) 启用守门员3) 允许单个应用绕过守门员4) 查看SIP状态5) 显示隐藏文件6) 取消显示隐藏文件7) 修改截图默认保存位置8) 禁用窗口截图的阴影9) 启用窗口截图的阴影10) 启用Safari在新标签中打开网页11) 禁用Safari在新标签中打开网页12) 禁用macOS 10.15 Catalina更新提示(去除..._mac 命令行 脚本
如果你的应用需要一个持久的WiFi长连接,你可以通过设置应用的Info.plist文件中的UIRequiresPersistentWiFi配置项的Boolean值来达到目的。如果这个配置项的值为YES,操作系统会在你的应用启动的时候打开一个WiFi连接,并且在你的应用运行期间一直保持这个连接处于打开状态;如果这个配置项的值为NO,操作系统会在30分钟后关闭处于活动状态的WiFi连接。..._ios开发 链接wifi超时时间
错误信息:解决办法:用editplus或其他工具打开logstash.bat,找到这行内容给%CLASSPATH%加上双引号,内容如下:%JAVA% %JAVA_OPTS% -cp "%CLASSPATH%" org.logstash.Logstash %*保存重启即可,但有可能你再下次重启时出现如下错误:该错误原因应该是当前logstash安装目录包含空格造成的,两种解决办法第一种方法. 修改l...
今晚分享的项目是:2020年虚拟项目正确玩法一、首先来看下案例案例一:打开淘宝搜索”素材“我们可以看到月销售都是上万的,就按单价,每单3元计算,一个月一万单就是三万,这三万就是纯利润,虚拟素材是可以重复卖的,没有什么成本。说明项目的利润是非常可观的。这也是一个长期的项目,前期做好,后期基本都是自动收款。再来看一个做软件的案例搜索”软件“二、操作1、店铺新店、老店都可以操2、注册号店铺先不要急着发布产品,先选择一个垂直领域,也就是细分领域,比如想做软件,就去收集软件的资源,3、素材
Unity消息机制_unity 消息机制
程序员最值得关注的10个C开源项目投递人itwriter发布于 2014-10-24 11:11评论(47)有10531人阅读原文链接[收藏]«» 1. Webbench Webbench 是一个在 linux 下使用的非常简单的网站压测工具。它使用 fork ()模拟多个客户端同时访问我们设定的 URL,测试网站在压力下工作的性能,最多可以模拟 3 万个并发连
_杰理sdk增加提示音方法
1.什么是J2EE容器J2ee包含的容器种类大约有 Web容器、Application Client容器、EJB容器、Applet客户端容器等_ierpejbjndi
http://jigsaw.w3.org/css-validator/#validate_by_upload http://validator.w3.org/#validate_by_upload转载于:https://www.cnblogs.com/c-delight/archive/2008/07/21/1247746.html
1、 安装Python extension for VS Code2、点击选择python解释器, ==> Enter interpreter path ==> Find ... , 找到python解析器的路径 ,在settings.json中会添加python.pythonPath字段:注意:如果未打开工作空间文件夹时 选择解释器,则VS Code会在用户设置中设置python.pythonPath,这通常设置VS Code的默认解释器。 用户设置可确保您始终具..._vscode搜索不到python.formatting.provider
介绍ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基百科、Stack Overflow、Github 都_minal 阮一峰