本章讲述 Activity 生命周期、状态以及状态切换时系统调用的方法。...activity状态图解 activity的状态( 某些场景下,暂停状态的activity可能会部分或完全可见) Nonexistent 表示 activity 不存在了,看不见了,它没有在内存里,...(发生在启动了另外的全屏 activity,或者点击了手机的主页按钮) Paused 表示 activity 在前台不能与用户交互但视图可见或部分可见。...在任何给定时间,整个系统中只有一个活动可以处于 resumed 状态。这意味着,如果一项活动进入 resumed 状态,则另一项 activity 可能会退出 resumed 状态。...Android 7.0 之后,有了多窗口模式,已经暂停的 activity 也是可见的状态,我们是希望已经暂停的 activitiy 也表现的像正常活动一样。
暂停状态 如果一个活动失去了焦点,但仍然可见(也就是说,一个新的非全尺寸或透明的活动将焦点放在了活动的顶部),那么它将被暂停。...暂停的活动是完全活动的(它维护所有状态和成员信息,并保持与窗口管理器的连接),但是在内存极低的情况下,系统可能会终止它。...它仍然保留所有的状态和成员信息,但是,它对用户来说不再可见,所以它的窗口是隐藏的,当在其他地方需要内存时,会被系统杀死。...: 当onStart ()之后或者取消暂停后,会调用该方法 onRestart() : 当取消停止后,会调用该方法 onPause() : 当另个非全尺寸或透明的活动将焦点放在了活动的顶部,那么该活动就会进入暂停状态...,然后调用该方法 onStop() : 当前活动被另个活动完全覆盖后(比如有人打电话过来),那么该活动就会进入停止状态,然后调用该方法,一般在这个方法中停止所有关于刷新界面的操作. onDestroy(
" android:label="This is MainActivity"> 然后运行以后查看logcat,创建了一个实例,然后在点击按钮,不会再产生新的实例。...当然也只需要按一下Back键就可以退出。 不过当MainActivity并未处在栈顶位置,那么在启动MainActivity时,还是会创建新的实例。...新建一个SecondActivity活动,让Main的按钮启动Second,Second启动Main, 可以看到按下三次按钮以后,系统创建了两个不同的MainActivity活动, 由于在Second...然后按下Back键,直接从Third返回到Main了,在按下Back又返回到Second了,在按下Back才是退出程序了。...因为Main和Third是在一个返回栈里面的,当在Third按下Back键,Third会出栈,那么Main成为栈顶的活动,就会显示出来, 在按下Back这时返回栈已经空了,于是就显示另一个返回栈里面的内容
android:theme="@style/Theme.AppCompat.Dialog"> 使用了android:theme属性,用于给当前活动指定主题的,这里用的,android...观察活动的生命周期 启动时 依次执行onCreate(),onStart(),onResume()。...按下Back返回MainActivity 由于之前MainActivity进入停止状态,所以onRestart()执行,又会依次执行onStart()和onResume(),但onCreate()不会执行...点击第二个按钮,启动DialogActivity onPause()执行,onStop没有执行,因为DialogActivity没有完全遮挡MainActivity,只是进入暂停状态, 相应按下Back...活动被回收怎么办 当一个活动进入停止状态,有可能被系统回收,那么当有一个活动A,在A基础上启动了活动B,A进入停止状态,这时由于系统内存不足,A被回收掉,这时按下Back键还是会正常显示A,但是不会执行
活动状态 每个活动在其生命周期中最多可能会有 4 种状态: 1、运行状态 当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。...系统最不愿意回收的就是处于运行状态的活动,因为这会带来非常差的用户体验。 2、暂停状态 当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。...处于暂停状态的活动仍然是完全存活着的,系统也不愿意去回收这种活动(因为它还是可见的,回收可见的东西都会在用户体验方面有不好的影响,)只有在内存极低的情况下,系统才会去考虑回收这种活动。...3、停止状态 当一个活动不再处于栈顶位置,并且完全不可见的状态,就进入了停止状态。...场景 比如我们看以下的场景: 应用中有一个活动 A ,用户在活动 A 的基础上启动了活动 B ,活动 A 就进入了停止的状态,这个时候由于系统内存不足,将活动 A 回收掉了,然后用户按下 Back 键返回活动
application下有 android:icon(图标) android:label(标题) android:theme(主题样式) 四大组件为: activity(活动) service...答:用户界面时用户看程序的视图界面,简称UI,用视图表示,在Android中为View,是负责提供组件绘制和事件处理的,是所有UI组件的基类~ 嗯,先来了解一下Activity,生命周期,创建,配置,启动...图片来源官方: 图片 四种状态 活动状态: 当前的activity处于最顶端,位于栈顶,用户可见,使应用获取焦点。 暂停状态: activity失去焦点,但对用户可见,如:弹窗。...停止状态: activity被完全覆盖,但保持所有状态和成员信息,如点击Home效果,为暂停,当重新打开,该活动再次获得焦点。 非活动状态: activity被销毁,即退出应用。...图片 activity starts -> onCreate() -> onStart() -> onResume() -> 运行状态 弹窗 onPause() -> 暂停状态 -> onStop
2.Activity生命周期 活动的生命周期对任何Android开发者来说都非常重要。 2.1活动状态 活动有四种状态:运行状态、暂停状态、停止状态、销毁状态。...此时活动处于暂停状态 onStop() 这个在活动完全不可见的时候调用,他和**onPause()**的区别在于,如果启动的新活动是一个对话框式的活动,那么onPause()方法会得到执行,而onStop...然后我们进入AndroidManifest.xml文件,修改一下这个ThirdActivity的配置,如下图所示: ?...下面我们来运行一下这个项目,然后会进入到主界面:如下图所示 ? 那么这个时候回使用那些方法呢? 点击Android Studio最下方的Android Monitor ?...看一下 ? 有没有发现很熟悉,没错,这个和我们在SecondActivity界面返回到FirstActivty界面时执行的方法一样,不信你回头去看。
这样就完成了在活动中动态添加碎片的功能,重新运行程序,可以看到和之前相同的界面,然后点击一下按钮,效果如图4.6所示。 ?...4.3.1 碎片的状态和回调 还记得每个活动在其生命周期内可能会有哪几种状态吗?没错,一共有运行状态、暂停状态、停止状态和销毁状态这4种。...暂停状态 当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与它相关联的可见碎片就会进入到暂停状态。...停止状态 当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态,或者通过调用FragmentTransaction的remove() 、replace() 方法将碎片从活动中移除,但如果在事务提交之前调用...总的来说,进入停止状态的碎片对用户来说是完全不可见的,有可能会被系统回收。 销毁状态 碎片总是依附于活动而存在的,因此当活动被销毁时,与它相关联的碎片就会进入到销毁状态。
然后再main.xml文件里面创建三个按钮,分别是播放、暂停、停止,代码如下: <?xml version="1.0" encoding="utf-8"?...:layout_height="wrap_content" android:text="Stop"/> 然后我们进入MainActivity活动页面,代码如下...mediaPlayer.setDataSource(file.getPath());//指定音频文件的路径 mediaPlayer.prepare();//让MediaPlayer进入到准备状态...当点击Pause按钮时会进行判断,如果当前MediaPlayer正在播放音频就调用pause()方法暂停播放。...当点击Stop按钮时会进行判断,如果当前MediaPlayer正在播放音频就调用reset()方法将MediaPlayer重置为刚刚创建时的状态,然后重新调用一遍initMediaPlayer()方法。
Android 音乐APP 启动优化 前言 Android应用冷启动时,又会短暂的黑屏或者白屏,然后才会进入主页面,黑屏是在Android版本低的时候才会出现,比如Android4.4、5.0。...正文 为了形成对比,先来看一下网易云的启动。 ? 可以看到当点击桌面的图标时,马上进入启动页,没有卡顿没有白屏,那么你再运行一下Good Music。 ?...然后进入AndroidManifest.xml。将MainActivity下的intent-filter放到SplashActivity下,作为打开应用进入的第一个页面。 ?...移动时间为1s,然后监听这个动画,当动画结束时,进入MainActivity,水道渠成。那么现在运行一下: ? GIF放上来可能有点卡帧,但是在手机上效果是相当的nice。...当页面有歌曲播放时,滑动列表会显示定位按钮,停止2s后会隐藏定位按钮,下面就是要在点击定位按钮时,定位到当前播放歌曲,虽然目前还没有播放过歌曲。只是一个选中位置。
在堆栈中,只有栈顶的活动可以操作,也就是说一个任务中只有一个活动处于运行状态,其他的活动都转入到后台暂停运行,Android系统会保存这些活动的状态,以便它们在转入前台时可以恢复运行。...(1) 运行状态 活动处于运行状态时,将位于栈顶,表示用户当前正在与活动进行交互操作,即:正在使用活动界面。在系统资源紧张的情况下,通常不会销毁处于运行状态的活动。...(2) 暂停状态 活动处于暂停状态时,活动界面部分可见,用户不能够对它进行操作,比如点击删除图片按钮,在图片显示界面(活动)上会弹出一个对话框,对话框让用户确认是否删除图片,对话框没有占据整个屏幕,因此显示图片的界面...如果用户启动其他活动,比如对话框式的活动,原来的活动就转为暂停状态。转移到暂停状态时,可以在onPause()函数中释放一些不用的资源,保存一些关键的数据。...碎片在运行状态是可见的,并且它所归属的活动也正在运行。当活动进入暂停状态(由于另一个未占满屏幕的活动被添加到了栈顶),它上面的碎片也会进入暂停状态。当活动停止,它上面的碎片就进入停止状态。
以下是对这四大组件的详细解释: Activity(活动): 定义: Activity是安卓应用中用户与应用进行交互的界面单元。...生命周期: Activity具有生命周期,包括创建(onCreate)、启动(onStart)、恢复(onResume)、暂停(onPause)、停止(onStop)、销毁(onDestroy)等阶段。...当广播事件匹配注册的条件时,系统会调用BroadcastReceiver的onReceive()方法。...onStart() 当Activity显示在屏幕上时,此方法被调用但此时还无法进行与用户的交互操作。...onDestroy() 这个方法在Activity销毁之前调用,之后Activity的状态为销毁状态。 onRestart() 当Activity从停止stop状态恢进入start状态时调用状态。
Activity 生命周期及其栈管理方式 Android 系统用栈的形式管理 Activity , 当新的 Activity 被创建是, 会被放置到栈顶, 这个 Activity 会进入到运行状态, 而前一个...(活动)状态: ; 当 Activity 失去焦点, 但是依旧可见, 比如被非全屏的对话框遮住部分, 称之为 暂停状态 , 暂停的 Activity 依然是活动的, 但是当系统内存严重不足时, 有可能被系统结束...; 当 Activity 完全不可见时, 称之为 停止状态 , 这时 Activity 依然保持其状态以及成员信息, 不过由于此时 Activity 对用户不可见, 当系统其它地方需要内存时, 经常会被结束...; 当 Activity 由不可见变成可见时, 称之为 重启状态 , 这时 Activity 必须迅速恢复它以前的状态。...多个 Activity 的栈管理方式 多个 Activity 之间采用的是栈道管理方式, 当用户启动新的 Activity 时, 新启动的 Activity 位于栈顶,当用户按后退按钮时, 栈顶的 Activity
在Android中Activity的生命周期莫过于Activity的创建到消亡的过程了。本篇博客就会介绍Activity生命周期中的不同阶段,通过实例的形式来窥探一下Activity的生命周期。...(1).onPause()方法:当点击跳转按钮时,运行中MainActivity就会调用onPause()变为停止状态,但仍然可见。...(3).onStop()方法:当SecondActivity处于运行状态时,MainActivity就完全不可见了,所以就会调用onStop()方法,进入完全不可见停止状态。 ?...下方的Log是点击返回按钮时所打印的Log. (1)onPause()方法:点击返回按钮后,SecondActivity会调用onPause()方法,进入暂停运行状态。...下此在进入SecondActivity中时,还是从onCreate方法进行执行。 ?
首先准备一部Android7.0及以上版本的手机,按下屏幕底部的任务键,此时屏幕下方会弹出一排的任务列表。...对于开发者来说,Android官方给出了以下的编码建议: 1、一般情况下,App默认都允许分屏模式。...但有的开发者认为自己的App只有在全屏状态下才能正常使用,要是被分屏的话用起来会很难受,这时候就得对该App禁用分屏模式。...这是因为Android在任一时刻只能有唯一的Activity处于活动状态,分屏模式下打开B应用的时候,系统会先暂停A的页面,然后加载B的页面,等到B页面加载完,才去恢复A页面。...因为通常开发者会在页面暂停时也暂停播放视频,等到页面恢复时再恢复播放视频。可是一旦遇到分屏的情况,用户一边看视频,一边在另一个窗口办事,这意味着视频播放页面会经常处于“先暂停再恢复”的状态。
Activity生命周期分为三种状态。运行状态,停止状态,暂停状态。 一.运行状态 当activity在最前端时,它是可见的,有焦点的,可以用来处理用户的常见的操作。如:点击,双击,长按事件等。...系统最不愿回收的就是出于此种状态的活动,这会带来非常差的用户体验。 二.暂停状态 activity依然可见,但它不再拥有焦点,即用户对它的操作没有实际意义。...当paused被覆盖返回时仍会调用该状态 4 onpause( ) 当用户进入透明的窗口时会被调用此时可以看见但是没焦点,当因内存不够会被kill掉此时会进入onResume状态 5 onStop( )...当activity被整个覆盖时进入该状态 6 onDestroy( )在activity被销毁前所调用的最后一个方法,当进程终止时会出现这种情况 7 onRestart( ) 当activity从停止状态重新启动时调用...2继续点击虚拟机的按钮,看到firstactivity调用了onpause方法暂停还是处于可见状态,此时,secondactivity经历前三个方法,完全可交互。
随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也可能从非活动状态转入活动状态。...02暂停状态(Paused) 在某些情况下,Activity对用户来说仍然是可见的,但它不再拥有焦点,即用户对它的操作是没有实际意义的。...但当内存不足时,这个暂停状态的Activity可能会被杀死。 03停止状态(Stopped) 当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。...04销毁状态(Killed) 当Activity运行结束,或Activity所在的进程结束时,这种状态称为销毁状态,也叫非活动状态。...关于Activity的这四种状态,是可以相互转化的,如下图所示。 ? 值得注意的时这四种状态中,运行状态和暂停状态是可见的,停止状态和销毁状态是不可见的。
4.2 活动的状态 每个活动在其生命周期中最多可能会有4种状态: 运行状态 暂停状态 停止状态 销毁状态 以下是活动的四个状态的详细解释: 状态名称 详细含义 运行状态 当一个活动位于返回栈的栈顶时,这时活动就处于运行状态...系统最不愿意回收的就是处于运行状态的活动,因为这会带来非常差的用户体验。 暂停状态 当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。...处于暂停状态的活动仍然是完全存活着的,系统也不愿意去回收这种活动(因为它还是可见的,回收可见的东西都会在用户体验方面有不好的影响),只有在内存极低的情况下,系统才会去考虑回收这种活动。...停止状态 当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。...系统仍然会为这种活动保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的活动有可能会被系统回收。 销毁状态 当一个活动从返回栈中移除后就变成了销毁状态。
按钮是最容易想到的方式。这里,我没有使用按钮,而是为一个TextView增加点击事件监听。 ?...在读取时,我们将根据键,来获得对应的数据值。数据可以在整个应用范围内调用。特定权限下,SharedPrefereces可以跨应用使用。...一个功能是监听按钮,在按钮点击后启动SelfEditActivity。另一个功能是从SharedPreferences中获得存储的键值,即用户名,再将用户名信息更新到界面上。...根据安卓的规定,MainActivity第一次运行,以及每次从暂停中复苏时,都会调用该方法。用户在SelfEditActivity修改返回后,就可以立即获得最新的数据。...运行 在"Edit Profile"中输入用户信息,提交后返回主页面,效果如下: ?
2. onCreate 和 onStart 的区别 activity的状态区别 onCreate在系统首次创建 Activity 时触发。Activity会在创建后进入已创建状态。...当 Activity 进入“已开始”状态时,系统会调用此回调。onStart() 调用使 Activity 对用户可见,因为应用会为 Activity 进入前台并支持交互做准备。...谈一下返回栈 首先理解android是使用Task来管理活动,一个Task就是一组存放在栈里的活动的集合,这个栈就叫做返回栈,每启动一个新的活动,就会将其放入栈顶,当我们点击back回退或调用activity...如何防止横竖屏切换(配置改变)时Activity销毁并切换 通过对AndroidManifest文件的Activity中指定(configChanges)属性: android:configChanges...该模式的 Activity 会默认进入启动它所属的任务栈,不涉及任务栈的转换。常用于防止快速连续点击而创建多个 Activity 实例。
领取专属 10元无门槛券
手把手带您无忧上云