当执行此类片段事务时,也可将其添加到由 Activity 管理的返回栈 — Activity 中的每个返回栈条目都是一条已发生片段事务的记录。借助返回栈,用户可以通过按返回按钮撤消片段事务(后退)。...实际上,如果要将现有 Android 应用转换为使用片段,可能只需将代码从 Activity 的回调方法移入片段相应的回调方法中。...savedInstanceState 参数是在恢复片段时,提供上一片段实例相关数据的 Bundle(处理片段生命周期部分对恢复状态做了详细阐述)。...从手机到平板电脑。 Fragment 是一个独立的模块,紧紧地与 activity 绑定在一起。可以运行中动态地移除、加入、交换等。...fragment.setArguments()传递到fragment中; 在该Fragment中通过调用getArguments()得到bundle对象,就能得到里面的值。
第四章-Android开发中的碎片 4.1 碎片是什么 碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛。...暂停状态 当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与它相关联的可见碎片就会进入到暂停状态。...停止状态 当一个活动进入停止状态时,与它相关联的碎片就会进入到停止状态,或者通过调用FragmentTransaction的remove() 、replace() 方法将碎片从活动中移除,但如果在事务提交之前调用...销毁状态 碎片总是依附于活动而存在的,因此当活动被销毁时,与它相关联的碎片就会进入到销毁状态。...或者通过调用FragmentTransaction的remove() 、replace() 方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack() 方法,这时的碎片也会进入到销毁状态
举例来说,有一个线程运行在后台从网络上下载数据,它可能会在onCreate()中创建线程,在onDestroy()中结束线程。...活动的可视生命时间,从调用onStart()到相应的调用onStop() 。在这期间,用户可以在屏幕上看见活动,虽然它可能不是运行在前台且与用户交互。在这两个方法之间,你可以保持显示活动所需要的资源。...活动的前台生命时间,从调用onResume()到相应的调用onPause()。...着色的椭圆表示活动的主要状态,矩形表示当活动在状态之间转换时你可以执行的回调方法。 ?...用于多个Activity之间互相传递数据。 android的隐形管理员:Service Service从字面上理解即为“服务”,这里与windows中的服务有点类似。
在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了...注意这里putExtra()方法接收两个参数: 第一个参数是键,用于后面从Intent中取值 第二个参数才是真正要传递的数据。 ...由于在一个活动中有可能调用startActivityForResult() 方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过检查...确定数据是从SecondActivity返回的之后,我们再通过resultCode 的值来判断处理结果是否成功。最后从data 中取值并打印出来,这样就完成了向上一个活动返回数据的工作。 ...中添加了一个actionStart()方法,在这个方法中完成了Intent的构建,另外所有SecondActivity中需要的数据都是通过actionStart()方法的参数传递过来的,然后把它们存储到
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。... 在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以将我们想要的数据暂存在Intent中,启动另一个活动后,只需要将这些数据取出就可以了。 ...一般情况下在onCreat()中完成各种初始化的操作,在onDestroy()中完成释放内存的操作。 Activity的可视生命周期:从调用onStart()到相应的调用onStop()。...例如:我们希望之前在一个文本框中输入了数据,希望下次打开时仍然保持该数据。...Intent还可以和Bundle一起用于传递数据,首先可以把需要传递的数据保存在Bundle对象中,然后将Bundle对象存入Intent中,到了目标活动之后先从Intent中取出Bundle,再从Bundle
选项菜单中的项目在屏幕上的显示位置取决于您开发的应用所适用的 Android 版本: 如果您开发的应用适用于 Android 2.3.x(API 级别 10)或更低版本,则当用户按“菜单”按钮时,选项菜单的内容会出现在屏幕底部...处理点击事件 用户从选项菜单中选择项目(包括应用栏中的操作项目)时,系统将调用 Activity 的 onOptionsItemSelected() 方法。 此方法将传递所选的 MenuItem。...在 Android 2.3.x 及更低版本中,每当用户打开选项菜单时(按“菜单”按钮),系统均会调用 onPrepareOptionsMenu()。...通过在未处理的情况下调用超类,系统会将事件逐一传递给每个片段中相应的回调方法(按照每个片段的添加顺序),直到返回 true 或 false 为止。...在侦听器的回调方法中,您既可以为上下文操作栏指定操作,也可以响应操作项目的点击事件,还可以处理从 ActionMode.Callback 接口继承的其他回调。
Fragment概述 1.1 介绍 Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity...的remove()、replace()方法将碎片从从活动中移除,但如果在事务提交之前调用addToBackStack()方法,这时的碎片也会进入到停止状态。...或者调用FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack()方法,碎片也会进入到销毁状态。...4.1 传递数据给Fragment 步骤流程: 在Activity中创建Bundle数据包,调用Fragment实例的setArguments(),将Bundle数据包传给Fragment Fragment...Activity 步骤流程: 在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口 Fragment通过回调接口传数据 简单示例: 首先在Fragment
在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了...比如说FirstActivity中有一个字符串,现在想把这个字符串传递到Second-Activity中,你就可以这样编写: ? ? ? ?...startActivityForResult()方法接收两个参数,第一个参数还是Intent,第二个参数是请求码,用于在之后的回调中判断数据的来源。...确定数据是从SecondActivity返回的之后,我们再通过resultCode的值来判断处理结果是否成功。最后从data中取值并打印出来,这样就完成了向上一个活动返回数据的工作。...系统仍然会为这种活动保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的活动有可能会被系统回收。 4.销毁状态 当一个活动从返回栈中移除后就变成了销毁状态。
Intent是Android程序各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。...Activity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节,下面详细介绍一下这7个方法。...中添加那些回调方法,然后Log日志打印,来看看它的生命活动: 打开FirstActivity,图片如下: ?...这个活动中,然后在回调方法里面加了日志打印,onCreate()是已经重写了的,所以我们只需要打印就可以了,下面的代码部分有六个回调方法,我们在上面介绍的时候提到过。...下面我们来运行一下这个项目,然后会进入到主界面:如下图所示 ? 那么这个时候回使用那些方法呢? 点击Android Studio最下方的Android Monitor ?
这一点,在电影片段上的展现尤为明显。 于是,研究人员就让志愿者们看起了电影… 志愿者为19名癫痫患者(原本20人,1人数据不可用),为了定位疾病发作区域,他们的大脑MTL区域已植入多个电极。...在看电影时,研究人员注意到了这样两组活跃的神经元。 △杏仁核(蓝色)、海马(黄色)或海马旁回(红色) 一组称为“边界细胞”,在应对软、硬边界时,都很活跃。...在编码任务中,每隔四到八个片段就会出现一个关于之前电影的问题(例如,有人戴眼镜吗?) 。 结果发现,志愿者准确回答了这些问题的89±5%。...直播报名 | 如何建立AI生态的“Android” 从感知到认知,AI还需要多久才能触及生产核心?从软件到数件,AI生态该如何建立自己“Android”?...3月16日19:30,「量子位·视点」CEO/CTO系列分享活动将邀请天云数据CEO雷涛直播分享个人见解。
Intent 调用浏览器打开网页 拨打电话 其他常用Intent 向下一个活动传递数据 向上一个活动传递数据 通过按下Back键向上传递 活动的生存期 活动被回收前的数据保存与恢复 创建自定义控件 报错整理...,可以把我们想要传递的数据暂存在Intent 中,启动了另一个活动后,只需要把这些数据再从Intent中取出即可。...向上一个活动传递数据 Activity 中还有一个startActivityForResult()方法也是用于启动活动的,但这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。...方法接收两个参数,第一个参数还是Intent ,第二个参数是请求码(只要是一个唯一值就可以),用于在之后的回调中判断数据的来源。...活动被回收前的数据保存与恢复 **onSaveInstanceState()**回调方法可以保证在活动被回收之前一定会被调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。
每次应用程序数据更改时,你的观察者都可以在每次更改时更新 UI,而不是更新 UI 没有内存泄露 观察者绑定到 Lifecycle 对象,并在其相关生命周期被破坏后自行清理 不会因为活动停止而崩溃 如果观察者的生命周期处于非活动状态...LiveData 自动管理所有这些,因为它在观察时意识到相关的生命周期状态变化 始终保持数据最新 如果生命周期变为非活动状态,它将在再次变为活动状态时接收最新数据。...例如,后台活动在返回前台后立即接收最新数据 配置更改友好 如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新的可用数据 资源共享 你可以使用单例模式扩展 LiveData 对象以包装系统服务...2、创建一个 Observer 对象并重写其 onChanged() 方法,该方法会在 LiveData 数据更改时被回调并返回最新数据,这一步通常在 UI 控制器中完成 3、使用 observer(...与 Room 一起使用 LiveData Room 持久化库支持可观察查询并返回 LiveData 对象,这些查询一般在 DAO 中编写 在更新数据库时,Room 会生成更新 LiveData 对象所需的所有代码
2. android:host 用于指定数据的主机名部分,如上边中的 www.baidu.com部分。 3. android:port 用于指定数据的端口部分,一般紧随在主机名之后。...然后在 data部分指定了协议是 tel,号码是 10086 Activity跳转时的数据传递 俩种方法: Activity通过Intent启动时,可以通过Intent对象携带数据到目标Activity... =(Mp3Info)intent.getSerializableExtra("mp3Info"); 例子: //这是在服务里,接收activity传递过来的数据,每次用户点击ListActivity当中的一个条目时...Activity中还提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...然后在 BaseActivity中重写 onDestroy()方法,并调用了 ActivityCollector的 removeActivity()方法,表明将一个马上要销毁的活动从活动管理器里移除。
因此,您不应使用 onPause() 来保存应用或用户数据、进行网络调用,或执行数据库事务。因为在该方法完成之前,此类工作可能无法完成。 已进入已停止状态,因此系统将调用 onStop() 回调。...在 onStop() 方法中,应用应释放或调整应用对用户不可见时的无用资源。例如,应用可以暂停动画效果,或从细粒度位置更新切换到粗粒度位置更新。...带参数的跳转 在跳转去下一个页面时,我们可能会想携带一些信息到下一个界面去。例如携带一些文本,数字等等。 或者是一个对象。 这些信息我们可以交给Intent,传递到下一个activity去。...但需要注意的是,在 onCreate 取出数据时一定要先判断savedInstanceState 是否为空。...singletask模式(栈内模式):当启动Activity时,只要该Activity在指定的栈中,就不会创建实例,去回调onNewIntent(intent)**方法。
6.4 屏幕间的跳转和事件的传递 在一般情况下,Android 的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android 使用 Intent 完成这个动作...Android 屏幕跳转的关系和方式如下图所示: ? 事实上,在 Android 中,屏幕使用一个活动来实现,屏幕之间是相互独立的,屏幕之间的跳转关系通过 Intent来实现。...点击“Go”按钮从 Forward 跳转到 ForwardTarget,这个内容在 Java 源文件 Forward.java 的以下片段中处理: public void onClick(View v)...本例中使用了 finish()函数表示当前的活动结束,这样在第二个活动(ForwardTarget)启动时,第一个活动(Forward)已经不存在了。...6.4.2.带有返回值的跳转 在某些时候,从跳转的对象返回时,跳转源头需要得到其返回的结果,这样两个屏幕才可实现一些交互。
3.广播接收器的生命周期 广播接收器有一个单一的回调方法onReceive(),当广播消息到达接收器时,Android将调用这个方法,并传递给包含在这个消息中的Intent 对象。 ...广播接收器只有在这个方法的执行过程中才处于活动状态,当onReceive()返回后,广播接收器将不再处于活动状态。广播接收器的功能类似于一个回调函数,只是单次运行时处于活动状态。...5.4 屏幕间的跳转和事件的传递 在一般情况下,Android的每一个屏幕基本上就是一个活动(Activity),屏幕之间的切换实际上就是在活动间互相调用的过程,Android使用Intent...Forward程序的运行结果如图所示: 点击“Go”按钮从Forward跳转到ForwardTarget,这个内容在Java源文件Forward.java的以下片段中处理: ...5.5 菜单的使用 在Android中具有单独接口,用于在活动中使用菜单。本例使用一个菜单来控制按钮的背景颜色,从其中可以了解如何在应用程序中使用菜单。
而且,由于手机的各种资源有限(内存、电源等),Android系统在内存紧张的时候,往往会销毁当前没有使用的活动(不显示或不能响应的界面)。在系统中,活动将不断经历从创建到销毁的周期运行。...在堆栈中,只有栈顶的活动可以操作,也就是说一个任务中只有一个活动处于运行状态,其他的活动都转入到后台暂停运行,Android系统会保存这些活动的状态,以便它们在转入前台时可以恢复运行。...在默认情况下,当一个活动启动另一个活动时,两个活动都放置在同一个任务中,即压入同一个返回栈。当用户按下后退键,后压入的活动将从返回栈中弹出,前面压入的活动又显示在屏幕上。...总之,采用singleInstance启动模式,无论从哪个任务启动目标活动,都只会创建一个活动实例。 (2) 事件的回调模型 Android系统在控件的内部已经定义了事件处理的回调函数。...Intent有时需要在不同的活动间传递数据。当调用startActivity()函数时,可以传递一些必要的数据给Activity,比如点击测试题界面的“查看答案”按钮,把当前的题目传递给答案活动。
(1)活动(Activity) 活动是最基本的 Android 应用程序组件,在应用程序中,一个活动通常就是一个单独的用户界面。...(4)内容提供者(Content Provider) 应用程序能够将它们的数据保存到文件或 SQLite 数据库中,甚至是任何有效的设备中。当需要将数据与其他的应用共享时,内容提供者将会很有用。...活动的生命周期 活动是 Android 中最重要、最基础的组件,用户在界面上看到的一个个可以切换的屏幕界面就是 Android中的活动。活动的生命周期如图 1 所示。 ?...活动被“覆盖”的情景:Android 的活动一般都占据一个完整的屏幕,从当前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),当前活动转入后台(Background),这时活动的...广播接收器的生命周期 广播接收器有一个单一的回调方法 onReceive(),当广播消息到达接收器时,Android 将调用这个方法,并传递给包含在这个消息中的 Intent 对象。
在这个过程中会针对不同的生命阶段会调用不同的方法 Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括: oncreate:Activity对象创建完毕...Activity中提供了一个 onSaveInstanceState()回调方法,这个方法会保证一定在活动被回收之前调用, 可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...以下几种情况的分析都遵循该原则 当用户按下HOME键时 长按HOME键,选择运行其他的程序时 锁屏时 从activity A中启动一个新的activity时 屏幕方向切换时 如何退出Activity?...Bundle传递数据的区别 Intent传递数据和Bundle传递数据是一回事, Intent传递时内部还是调用了Bundle。...活动传递给Fragment:为了方便碎片和活动之间进行通信, FragmentManager提供了一个类似于findViewById()的方法,专门用于从布局文件中获取碎片的实例,前提是自己在布局文件中定义
领取专属 10元无门槛券
手把手带您无忧上云