首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓-碎片的使用入门

想象我们正在开发一个新闻应用,其中一个界面使用RecyclerView展示了一组新闻的标题,当点击了其中一个标题,就打开另一个界面显示新闻的详细内容。...4.2.4 碎片和活动之间进行通信  虽然碎片都是嵌入在活动显示的,可是实际上它们的关系并没有那么亲密。...运行状态 ​ 当一个碎片是可见的,并且它所关联的活动正处于运行状态碎片也处于运行状态。...停止状态 ​ 当一个活动进入停止状态,与它相关联的碎片就会进入到停止状态,或者通过调用FragmentTransaction的remove() 、replace() 方法将碎片活动移除,但如果在事务提交之前调用...碎片创建视图(加载布局)时调用。 onActivityCreated() 。确保与碎片相关联的活动一定已经创建完毕的时候调用。 onDestroyView() 。

1.3K20

生命周期感知 Lifecycle

假如我们有个 Activity 在屏幕上显示设备位置信息,最常见的实现可能就是这样了: Kotlin internal class MyLocationListener( private...如果你想管理整个应用进程的生命周期可以看看这个 ProcessLifecycleOwner 这个接口单个类抽象出生命周期的所有权,例如 Activity 和 Fragment,可以与你写的组件共享生命周期...不幸的是,在 onSaveInstanceState() 之后调用了 AppCompatActivity 的 onStop() 方法,这留下了一个空白,在空白,不允许 UI 状态更改,但生命周期尚未移至...避免此问题,版本 beta2 及更低版本的 Lifecycle 类将状态标记为 CREATED 而不调度事件,因此,即使直到系统调用了 onStop() 才调度事件,任何检查当前状态的代码都将获得真实值...这将创建一个可能较长的时间间隔,在时间间隔,即使无法修改其 UI 状态,观察者仍认为生命周期处于活动状态。

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

而且,由于手机的各种资源有限(内存、电源等),Android系统在内存紧张的时候,往往会销毁当前没有使用的活动(不显示或不能响应的界面)。在系统活动将不断经历创建到销毁的周期运行。...用户的角度来看,用户在使用Android应用的时候,经常打开多个界面(活动),完成一系列的操作,比如:用户要在浏览器查看新闻就需要点击新闻列表,打开新闻浏览界面;如果想把刚才看到的新闻分享给微信中的朋友...在默认情况下,当一个活动启动另一个活动,两个活动都放置在同一个任务,即压入同一个返回栈。当用户按下后退键,后压入的活动将从返回栈中弹出,前面压入的活动显示在屏幕上。...当一个应用启动其他应用活动,比如:用户拍照以后把相片共享给QQ的朋友,这时将打开QQ应用界面,这两个应用(拍照和QQ)的界面(活动)对用户来说好像属于同一个应用程序;而在系统内部,任务与任务之间是相互独立的...在资源路径drawable下面添加一个文字选择器xml文件,在selector标签,加入两个item标签,当选中状态“真”,设置文本选中颜色(设置粉色),当选中状态“假”,设置正常状态颜色

9510

Android开发笔记(一百六十九)利用BottomNavigationView实现底部标签栏

在创建页面的“Activity Name”一栏填写新活动的名称,再单击页面右下角的Finish按钮,Android Studio就会自动创建活动的Java代码及其布局文件。...注意到初始页面的Home标签文字到图片均为高亮显示,说明当前处于Home频道。接着点击Dashboard标签,此时界面如下图所示,可见切换到了Dashboard频道。...底部导航视图又由一排标签菜单组成,具体菜单在@menu/bottom_nav_menu定义;而碎片各频道的主体部分,具体内容在app:navGraph="@navigation/mobile_navigation...定义。..." /> 上述的导航定义文件以navigation根节点,内部依旧分布着三个fragment节点,显然正好对应三个频道。

1.3K20

【Android】再来一篇Fragment的懒加载(只加载一次哦)

使用前需知 2017-7-14更新: 目前有人使用后出现了诸如首次打开显示空白界面,但点击有反应;或来回切换又变空白界面的问题。...稍微讲解一下,有些时候,我们打开一个 Fragment 页面,希望它是在可见才去加载数据,也就是不要在后台就开始加载数据,而且,我们也希望加载数据的操作只是第一次打开 Fragment 才进行的操作...除了懒加载,只加载一次的需求外,可能我们还需要每次 Fragment打开或关闭显示数据加载进度。...() 之前调用,所以第一次打开,可以用一个全局变量表示数据下载状态, * 然后在方法内将状态设置下载状态,接着去执行下载的任务 * 最后在 onFragmentVisibleChange...如果出现切换回来或不相邻的Tab切换导致空白界面的问题,解决方法:在 onCreateView复用布局 + ViewPager 的适配器复写 destroyItem() 方法去掉 super。

1.6K70

Fragment基本使用

运行状态:碎片可见,关联活动处于运行状态,其也运行状态 暂停状态:活动进入暂停状态,相关联可见碎片就会进入暂停状态 停止状态:活动进入停止状态,相关联碎片就会进入停止状态,或者通过FragmentTransaction...的remove()、replace()方法将碎片活动移除,但如果在事务提交之前调用addToBackStack()方法,这时的碎片也会进入到停止状态。...或者调用FragmentTransaction的remove()、replace()方法将碎片活动移除,但在事务提交之前并没有调用addToBackStack()方法,碎片也会进入到销毁状态。...():隐藏当前Fragment,仅不可见,不会销毁 transaction.show():显示之前隐藏的Fragment detach():会将viewUI移除,和remove()不同,此时fragment...A,调用Fragment B,通过newInstance函数获取实例并传递参数: public class Fragment1 extends Fragment { @Override

1.9K30

谷歌官方Android应用架构库——LiveData

locationManager.removeUpdates(listener); }} Location 监听的实现有 3 个重要部分: onActive():当 LiveData 有一个处于活动状态的观察者方法被调用...vonInactive():当 LiveData 没有任何处于活动状态的观察者方法被调用。由于没有观察者在监听,所以没有理由保持与 LocationManager 的连接。...setValue():调用方法更新 LiveData 实例的值,并将此变更通知给处于活动状态的观察者。...和 activity 在观察 MyLocationListener 实例,LiveData 可以规范的管理它们,以便只有当它们的任何一个可见(即处于活动状态)才连接到系统服务。...postalCode 被定义 addressInput 的转换,所以当 addressInput 改变,如果有处于活动状态的观察者,repository.getPostCode() 将会被调用。

1.1K30

Android从零开始搭建MVVM架构(4)——LiveData

当你更新LiveData对象存储的数据,所有注册了的Observer,只要所绑定的LifecycleOwner处于活动状态,就会被触发通知。...这些UI控制器负责显示数据而不是保存数据状态。 将LiveData实例与特定Activity或Fragment实例分离,这将使得LiveData对象在配置更改后仍然存活。...确保Activity或Fragment一旦变为活动状态,就有可展示的数据。 当应用程序组件处于STARTED状态,它就需它所观察的LiveData对象接收到最新的值。...并且,如果Observer第二次非活跃状态变为活跃状态,则只有在自上一次变为活跃状态以来数据发生变化时才会接收到更新。...当更新数据库,会生成所有必要的代码来更新LiveData对象。 生成的代码在需要在后台线程上异步运行查询。 这种模式对于保持用户界面显示的数据与存储在数据库的数据同步很有用。

2.2K30

Android编程权威指南笔记3:Android Fragment讲解与Android Studio的依赖关系,如何添加依赖关系

Android Fragment 当我在学习,了解了Fragment词汇 Fragment是一种控制器对象,我就把所了解的简单说一下。...这个步骤在以后的代码,你也可以看到,或者你打过,我这里也打过。 创建一个动态UI:FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。...片段与它所处的活动密切相关,不能与之分开使用。虽然Fragment定义了自己的生命周期,但是生命周期取决于其活动:如果活动停止,则不能启动其中的碎片; 当活动被破坏,所有碎片将被破坏。...android studio软件,选择file–>project structure…菜单项,然后打开project structure,在module中选中app。...text size:指定设备上显示的文字像素高度; margin:指定视图组件间的距离; padding:指定视图外边框与内容间的距离。

1.7K30

Android交流会-碎片Fragment,闲聊单位与尺寸

标题图 女孩:又周末了哦~ 男孩:那么今日来开个交流会,我们也学一学人家高大尚的大会,自己开一个,广州站,Android开发攻城狮交流会~ 1.Fragment概要: Android3.0开始引入了Fragment...的概念,中文意思碎片,它的出现是为了更好展示UI的设计,让程序更加得到充分的展示。...但它会受所属的Activity的生命周期影响,因为一个Fragment是被嵌入到一个Activity的。...我们先来添加一个setMain() 方法,来显示打开界面显示的初始页面 实现点击底部导航栏来切换响应的fragment,我们在onClick()添加即可 图片 3.创建Fragment 创建一个...男孩:px在Android最小元素单元,px像素,pt是磅数的意思,在Android通常作为字体的单位来用~ 女孩:那dp和sp呢?

1.2K20

收藏!Dropbox 是如何解决 Android App 的内存泄漏问题的?

泄漏可能发生在任何程序和平台上,但由于活动生命周期的复杂性,这种情况在 Android 应用尤其普遍。...常见例子 引用长期运行的服务 image.png Fragment 引用了一个活动,而活动引用一个长期运行的服务 在这种情况下,我们有一个标准设置,活动持有一个长期运行的服务的引用,然后是 Fragment...例如,假设活动以某种方式创建了对其子 Fragment 的引用。然后,只要活动还在,Fragment 也会继续存在。...image.png Fragment 永远不会再使用,但它会一直在内存 长期运行的服务引用了 Fragment 视图 另一方面,如果服务获得了 Fragment 视图的引用呢?...首先,视图现在将在服务的整个持续时间内保持活动状态。此外,因为视图持有对其父活动的引用,所以活动现在也会泄漏。

91830

Dropbox 如何解决 Android App 的内存泄漏问题?

泄漏可能发生在任何程序和平台上,但由于活动生命周期的复杂性,这种情况在 Android 应用尤其普遍。...常见例子 引用长期运行的服务 Fragment 引用了一个活动,而活动引用一个长期运行的服务 在这种情况下,我们有一个标准设置,活动持有一个长期运行的服务的引用,然后是 Fragment 及其视图持有活动的引用...例如,假设活动以某种方式创建了对其子 Fragment 的引用。然后,只要活动还在,Fragment 也会继续存在。... Fragment 永远不会再使用,但它会一直在内存 长期运行的服务引用了 Fragment 视图 另一方面,如果服务获得了 Fragment 视图的引用呢?...首先,视图现在将在服务的整个持续时间内保持活动状态。此外,因为视图持有对其父活动的引用,所以活动现在也会泄漏。

1.1K10

很全面的Android面试题

以下几种情况的分析都遵循原则 当用户按下HOME键 长按HOME键,选择运行其他的程序时 锁屏 activity A启动一个新的activity 屏幕方向切换 如何退出Activity?...动态注册:需要使用广播接收者,执行注册的代码,不需要,执行解除注册的代码 安卓中有一些广播接收者,必须使用代码注册,清单文件注册是无效的 屏幕锁屏和解锁 电量改变 public class MainActivity...活动传递给Fragment:为了方便碎片和活动之间进行通信, FragmentManager提供了一个类似于findViewById()的方法,专门用于布局文件获取碎片的实例,前提是自己在布局文件定义...fragmentfragment数据传递 首先在一个fragment可以得到与它相关联的活动,然后再通过这个活动去获取另外一个fragment的实例,这样也就实现了不同fragment之间的通信功能...补间动画是放置到res/anim/下面 帧动画是放置到res/drawable/下面,子节点animation-list,在这里定义要显示的图片和每张图片的显示时长 补间动画 如果动画中的图像变换比较有规律

53010

很全面的Android面试题

以下几种情况的分析都遵循原则 当用户按下HOME键 长按HOME键,选择运行其他的程序时 锁屏 activity A启动一个新的activity 屏幕方向切换 如何退出Activity?...动态注册:需要使用广播接收者,执行注册的代码,不需要,执行解除注册的代码 安卓中有一些广播接收者,必须使用代码注册,清单文件注册是无效的 屏幕锁屏和解锁 电量改变 public class MainActivity...活动传递给Fragment:为了方便碎片和活动之间进行通信, FragmentManager提供了一个类似于findViewById()的方法,专门用于布局文件获取碎片的实例,前提是自己在布局文件定义...fragmentfragment数据传递 首先在一个fragment可以得到与它相关联的活动,然后再通过这个活动去获取另外一个fragment的实例,这样也就实现了不同fragment之间的通信功能...补间动画是放置到res/anim/下面 帧动画是放置到res/drawable/下面,子节点animation-list,在这里定义要显示的图片和每张图片的显示时长 补间动画 如果动画中的图像变换比较有规律

5.9K70

Dagger Android支持库(译文)

而不需要第2步和第3步,添加一个返回活动的抽象模块方法,使用@ContributesAndroidInjector对其进行注释,并指定要安装到子组件的模块。...DispatchingAndroidInjector 您的活动类(即YourActivitySubcomponent.Builder)查找AndroidInjector.Factory,创建AndroidInjector...在您自己的代码创建BroadcastReceiver,使用构造函数注入。 支持库 对于Android支持库的用户,dagger.android.support 包存在相同类型。...在 onAttach() 执行相同操作,这也可以防止重新附加Fragment出现不一致。...在Activity的super.onCreate() 之前调用AndroidInjection.inject() 是至关重要的,因为对 super 的调用会在配置更改期间附加前一个活动实例的 Fragments

94830

Android学习笔记(四)深入探讨Activity

在应用程序至少包含一个用来处理应用程序的主UI功能的主界面屏幕。这个主界面一般由多个Fragment组成,并由一组次要Activity支持。...2、Activity状态   随着Activity的创建和销毁,移进移出的过程他们经历了如下4种可能的状态: · 活动状态:当一个Activity处于栈顶是,它是可见的、具有焦点的前台Activity...此时,Activity仍然会保留在内存,保存所有状态信息,然而当系统的其他地方要求使用使用内存,会优先终止此类状态的Activity。 · 非活动状态:Activity被终止。...此时Activity已经移除了。 3、监控状态改变   为了保证Activity可以对状态改变做出反应,Android提供了一系列的回调方法,当Activity的状态改变它们就会被触发。...Activity被销毁前可能会经历多个活动生存期,在失去焦点是,活动生存期就结束了。尽量让onPause和onResume方法的代码执行迅速,尽可能少。以保证前后台切换能够保持响应。

1.1K100

最全Excel 快捷键总结,告别鼠标!

(特别重要) Ctrl+N:创建一个新的空白工作簿。(特别重要) Ctrl+O:显示打开”对话框以打开或查找文件。...(特别重要) Ctrl+Q:当有单元格包含选中的数据,将为数据显示“快速分析”选项。(重要) Ctrl+S使用其当前文件名、位置和文件格式保存活动文件。...Ctrl+Shift+*:选择环绕活动单元格的当前区域(由空白行和空白列围起的数据区域)。在数据透视表,它将选择整个数据透视表。 Ctrl+Shift+::输入当前时间。...Ctrl+L:显示“创建表”对话框。 Ctrl+N:创建一个新的空白工作簿。 Ctrl+O:显示打开”对话框以打开或查找文件。...End 如果单元格空,请按 End 之后按箭头键来移至该行或的最后一个单元格。 当菜单或子菜单处于可见状态,End 也可选择菜单上的最后一个命令。

7.2K60

Android学习笔记(六)Fragment的生命周期

一、Fragment的几种状态:   与Activity类似,Fragment也有一下几种状态:   · 活动状态:当前Fragment位于前台,可见,可获得焦点。   ...· 暂停状态:其他Activity位于前台,Fragment可见,不可获得焦点。   · 停止状态:不可见,失去焦点。   · 销毁状态:Fragment被完全删除或被结束。...· onCreateView(): 每次创建、绘制Fragment的View组件回调,Fragment将会显示方法返回的View组件。   ...· onDetach():将FragmentActivity删除、被替换完成回到方法,在onDestroy()之后回调。   根据以上方法被回调的时机,我们可以根据需要选择性的覆盖指定方法。...三、Fragment生命周期实例   下面代码是Fragment生命周期的例子,重写了以上十一个生命周期方法: 1 @SuppressLint("NewApi") 2 public class MyFragment

677100
领券