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

导航组件概览 | MAD Skills

您可能需要在每一个 UI 元素触发导航动作代码添加一个监听,并编写代码使之启动一个 intent 来展示一个新 activity,或者切换到一个 Fragment。...操作 (action) 定义了可能导航,但其不指定导航发生时间,该逻辑存在于代码。...所以当用户点击某界面元素并需要触发导航时候,您应该调用导航 API 使用其中一个操作来导航到图中一个目的地。 操作还可以被用来定义传入目的地参数,以及从源目的地和目的地进入退出转场动画。...发现,观察 UI 各个部分在包含层级相互关系对于理解它们如何一起工作十分有帮助。为了查看这个部分,让我们来使用 Navigation Drawer Activity 模板创建另一个新工程。...有一点需要注意是 NavigationView 存在于 NavHostFragment 容器之外,它本身并不是一个目的地,而只是一个指定应用导航目的地途径。

1.6K30

使用导航组件: 对话框目的地 | MAD Skills

可惜是,竟然在 Play 商店找不到一个甜甜圈记录应用 (太不可思议了)。所以我只能自己写一个应用。...这将是一个相当简单应用,它包括两个页面: 一个甜甜圈列表页 一个可以输入甜甜圈相关信息表单页,它既可以是关于我要新增到列表甜甜圈,也可以是关于我要编辑已存在列表甜甜圈 至于信息编辑页面,希望能用一个对话框...还创建了第二个目的地,叫做 donutEntryDialogFragment,这个是用来让用户编辑甜甜圈信息。...这是因为上述代码片段来自于 DonutTracker 应用最终版本,在该版本使用了 SafeArgs。...其次,我们从 FAB 导航时 (不需要传递参数给 Directions 对象) 调用 navigate() 方法和从甜甜圈列表任一列表项导航时 (需要传递 donut.id) 不太一样。

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

闲话资源管理

在 .NET 垃圾回收 GC 帮助我们管理托管资源,在开发时我们不需要过多关注大多数内存问题(例如:内存泄漏、dangling pointer)。...GC Mark and Compact 算法会快速检测出由简单或复杂关系网所形成循环引用,并把所有不可达对象是为一个整体从内存清理出去。...GC 会检测出和应用程序根对象没有任何通路相连对象,然后判定这些对象为不可达对象,接着将这些对象从内存清理出去,最后 GC 将会压缩托管堆把其中活动对象放在一起,把空闲内存放在一起形成连续内存区域...在这里需要注意是具有 finalizer 对象并不是只存在与一个周期中,而是有可能存在于多个周期中。....然后世代存在给具有 finalizer 对象带来了发及时释放问题,因为 GC 在每次执行周期都会判断 0 代对象是不是垃圾,每执行 10 个周期就会判断一次 1 代对象是不是垃圾,到了 2 代对象这里则会执行

83620

ViewModels 简单入门

其中有一部分是教学生构建一个简单 App 叫做 Court-Counter. Court-Counter 是一个只有几个按钮来修改篮球比赛分数 App。...Activity 生命周期中,onCreate可能会被调用多次,比如当应用程序旋转时,但 ViewModel 会一直存在,不会被重建。...每次调用 onCreate 方法都会再次调用这个方法。它会返回之前 Court-Counter MainActivity 创建 ViewModel。 这就是它持有数据方式。...**class**); 这可以让你有一个应用程序,打开同一个 Activity or Fragment 不同实例,但具有显示不同 ViewModel 信息。...结论和进一步学习 在这篇文章探索了新ViewModel类基础知识。关键要点是: ViewModel类旨在一个连续生命周期中保存和管理与UI相关数据。

1.1K70

Fragment使用起来非常简单

android:layout_height="wrap_content"/> 上面两种方法选择其中一种即可,然后在Activity在onCreate( )方法调用...这样我们一个Fragment示例程序就已经完成了。直接运行程序,可以看到下图所示界面: ?...二、动态加载 已经学会了在布局文件添加Fragment方法,非常简单,但是有一个缺点,那就是一旦添加就不能在运行时将其删除。...开启一个事务,通过调用beginTransaction方法开启。 向容器内加入Fragment,一般使用add或者replace方法实现,需要传入容器id和Fragment实例。...如果该系列分享对你有帮助,就动动手指关注、点赞、留言吧,你互动就是对最大鼓励! 此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!

1K40

AndroidX下使用Activity和Fragment变化详解

无需在Activity 重写 onCreate() 即可调用 setContentView() 方法。...另外,无需手动在Fragment重写 onCreateView 即可手动调用 Inflater 来扩展视图。...: OnBackPressedCallback 构造函数布尔类型参数有助于根据当前状态动态 打开/关闭按下行为 addCallback() 方法可选第一个参数是 LifecycleOwner...就像在OnBackPressedDispatcher 中一样,您可以例如将 SavedStateProvider 提取到另一个类,通过使用所需任何逻辑使其与数据一起使用,从而在应用程序实现清晰保存状态行为...例如,在AndroidX Fragment-KTX 1.2.0 ,使用片段化类型扩展名可用于FragmentTransaction 上 replace() 方法。

1.7K10

InnoDB Tidbit:The doublewrite buffer wastes 32 pages (512 KiB) (12.双写缓冲区会导致512KB浪费)

不断探索完全理解InnoDB数据存储过程遇到了一个非常小而无关紧要问题。这个问题还是比较有趣注意到下面的页面的块,他们很早就在ibdata1系统标空间中分配,但是显然没用使用。...MySQL手册上说,在“InnoDB磁盘I/O”: InnoDB使用了一种新文件刷新技术,涉及到一种叫做双写缓冲区结构。...如果操作系统在写页面的过程崩溃了,InnoDB可以在恢复过程从双写缓冲区中找到一个页面副本。...在一个典型系统,InnoDB会分配以下页面: 片段页13-44——永久未使用片段页,但保留分配给双写缓冲区文件段。 范围从第64页开始,到第127页结束,实际上是双写缓冲区第1块。...总结 有几种方法可以避免这种情况,比如在分配两个区段之后释放各个页面,或者添加特殊“无片段”分配方法。然而,正如我在开始时所说,这是非常无关紧要,因为每次安装总共只有512 KiB。

54710

解析Javascript事件冒泡机制

事件          在浏览客户端应用平台,基本生都是以事件驱动,即某个事件发生,然后做出相应动作。          浏览事件表示是某些事情发生信号。...在上升过程,气泡会经过不同深度层次水。 ? 相对应地:这个气泡就相当于我们这里事件,而水则相当于我们整个dom树;事件从dom 树底层 层层往上传递,直至传递到dom根节点。...分析以上结果: 无论是body,body 子元素div1,还是 div子元素div2,还有 span, 当这些元素被点击click时,都会产生click事件,并且body都会捕获到,然后调用相应事件处理函数...,点击div2 时候,弹出 "你好,是第二层div";点击span 时候,弹出"您好是span。"。    ...; }); } 预期上述代码会单击span 时候,会出来一个弹出框 "您好是span。" 是的,确实弹出了这样对话框: ?

57240

一个简单 sql 问题,差点把同事问出了内伤。【技术创作101训练营】

又babalala说了一堆他们各自优点和缺点,心想估计他自己都不知道这么多。 小A :厉害厉害,你再说说下, B+数如果来了一个新节点,是怎么旋转?...这个题一步小心就掉坑里了,很可能会联想到二叉树旋转,好在还算是一个老司机。 : 你小子不老实,B+ 插入时候不是旋转,是靠节点分裂,少来误导。 小A : 可以啊,老哥,这都被你猜破了。...[01.jpg] : 在InnerDB,如果更新 1000w+ 数据,在更新过程中服务宕机了,会产生什么结果?...当 1 时候,事务提交会直接把 log buffer 数据同步写入 os buffer ,并同时写入到磁盘 当 2 时候,每次提交都仅写入到 os buffer ,然后是每秒调用 fsync()...首先,log buffer 写入方式参数默认值是 1 ,我们默认没有修改过。 其次,我们需要知道宕机类型,服务僵死?还是 MySQL 崩溃? 最后,确定在更新哪一步发生了崩溃

430111

利用特殊协议加载本地文件, 绕过 HTML5 沙箱, 打开弹窗诸事

注意我们也在一个名为 “Windows.Protocol” 键之中,稍微上下滚动了一些,以便看看有没有其他应用程序在其中。然后发现他们很多拥有自己注册协议。...继续在注册表按下 F3 键,发现了 read: 协议,它引起了注意力,因为当阅读它 (javascript)源码时,它可能有潜在 UXSS 漏洞,但是尝试过程 Edge 一次次地崩溃了。...发现不会使 read 协议崩溃唯一方法就是加载来自 http[s]东西。其他都会使浏览崩溃。 那么让我们将 WinDbg 附加至 Edge 浏览吧。...让我们继续运行下去,直到我们找到一个有意义函数名。下一个叫做 blah FallFast,它也有一些 Edge 知道出错了才调用味道。但是我们想找到使 Edge 不愉悦代码,那么继续读下去吧。...我们知道如果 Edge 到达这个片段最后一条指令(地址为 88106957,FailFast_Hr),Edge 就会崩溃掉。我们目标是弄清我们最终到达地方,就是说谁TM把带到那里

2.3K80

C#开发环境与程序设计基础

实验1:使用命令行开发简单C#应用程序 打开一个文本编辑,添加下面的代码。...HelloWorldApplication { class HelloWorld { static void Main(string[] args) { /* 一个...) 选择控制台应用程序 为您项目取一个名字,选择其存放位置 选择相应.NET框架 新项目会出现在解决方案资源管理。...右击”解决方案资源管理项目(截图中项目是ConsoleApp2)在弹出对话框中选择调试,在调试应用程序参数输入框添加相应内容并保存,程序运行后输出如下 实验4:程序跟踪调试 程序错误经常被叫做...这样就可以使得程序在想要位置随意停止执行,继而一步步执行下去。 F10 逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。

75910

Android内存泄漏原因、解决办法以及如何避免

作为开发人员,在我们日常开发,为了构建更好应用程序,我们需要考虑很多事情以保证应用运行在正轨上,其中之一是要确保我们应用程序不会崩溃。应用崩溃一个常见原因是内存泄漏。...在大多数情况下,我们看到内存使用率稳步上升,直到应用程序不能分配更多资源,并不可避免地崩溃。在Java这往往导致一个OutOfMemoryException异常被抛出。...对于这个特殊例子,我们所要做就是启动我们应用程序,然后旋转设备一次,然后调用Dump Java Heap操作(在Memory旁边,从左边数起第三个图标)。...这将生成一个HPROF文件,其中包含我们调用该操作时一个内存快照。几秒钟后,Android Studio 会自动打开该文件,给我们更易于分析内存直观表示。 不会去深入有关如何分析巨大内存堆。...如同内部类,一个匿名类在Activity生命周期之外执行或在其他线程执行工作时,可能会导致内存泄漏。在这个例子将使用流行HTTP请求库Retrofit执行API调用,并传递响应给对应回调。

1.9K10

不服来战,看Kotlin如何完爆Java

想我还是通过解释Kotlin语言好处来开始这篇文章吧。 在这一点上,没有人惊讶地看到相同web应用程序运行于任何设备,任何平台(Android、iOS、 Windows、MacOS…)。...Java强悍之处在于如今它已经应用于数十亿设备上,无论其硬件和软件如何,只要它有一个Java编译生成pseudo-compiled解释。 但是,这是否意味着Java是完美的解决方案?...对于函数式编程,没有本地支持:在Java,有Stream API (再说一次,它只支持从API 24开始Android),但是它在语言中集成类似于Optional;它不存在于与原始类型相关联对象...(事实上,它创建者应该为他所说“十亿美元错误”道歉),而这些检查中有多少是为了避免在我们应用程序中出现崩溃而做出补丁呢?...随着时间流逝,需要有一种现实和原生支持语言来解决所有上面提到问题变得越来越必要,这种语言需要同时拥有在本文开头提到主要特点:编写和编译一个应用程序,使它可以运行在任何设备和版本上。

99650

手把手教你查看和分析iOScrash崩溃异常

崩溃异常类型显示为EXC_BAD_ACCESS表明是产生了无效地址读写访问,整个崩溃函数调用应用程序任何上下文信息。...应用程序出现崩溃异常时除了函数调用栈可提供分析参考外,还可以从寄存值来进行一步分析。根据上述函数指令实现可以看出: x0 寄存保存就是那个被销毁了对象指针。...具体详细介绍可以参考另外一篇文章:寄存介绍 上面的崩溃调用,所有的函数和方法都是系统函数并没有程序自身源代码,因此很难跟踪或者发现问题产生原因,因为此时是无法知道是哪个类对象执行方法调用而产生...这个寄存值保存调用方法名, 它是一个SEL类型数据,因此可以根据x1保存方法名来进行反推,也就是从方法名来反推出产生崩溃对象类名。...x1寄存中保存方法内存地址是存在于某个加载库Image代码段,因此可以在崩溃日志Binary Images列表中找到定义方法名库Image信息,Binary Images列表每个库Image

5.7K31

Android 内存泄漏分析心得

当垃圾回收准备回收一个对象时,如果发现它还有虚引用,就会在回收对象内存之前,把这个虚引用加入到与之关联引用队列。...Activity Context 不正确使用 在Android应用程序通常可以使用两种Context对象:Activity和Application。...假设一个场景,当应用程序有个比较大Bitmap类型图片,每次旋转是都重新加载图片所用时间较多。...如果Context 对象想要在服务内部事件发生时被通知,那就需要把自己注册到服务监听。...它们缓冲不仅存在于 java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它引用设置为null,而不关闭它们,往往会造成内存泄漏。

2.3K10

软件系统稳定性

软件系统稳定性,主要决定于整体系统架构设计,然而也不可忽略编程细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要代码片段可能会带来整体软件系统崩溃。...一书中,给出了如下Java代码片段: ? △ 代码片段,需单击放大或横向阅读 这一小段代码是造成Airline系统崩溃罪魁祸首。...假设有这样一个接口: ? △ 代码片段,需单击放大或横向阅读 如果接口方法get()实现如下: ?...△ 代码片段,需单击放大或横向阅读 这段代码很简单,当调用者试图根据id获得目标对象时,首先会在Cache寻找,如果有就直接返回;否则通过create()方法获得目标对象,然后再将它存储到Cache...由于此时create()方法是远程调用,当服务端比较繁忙时,发出远程调用请求可能会被阻塞。由于get()方法是同步方法,在方法体内,每次只能有一个线程访问它,直到方法执行完毕释放锁。

7.3K60

使用 Chrome Dev tools 分析应用内存泄漏问题

在这种情况下,内存未被任何应用程序使用,并且被不必要地占用。 这会导致低性能、高延迟和频繁崩溃。...好吧,因为它是自动管理,所以我们作为开发人员总是有一个错误印象,即我们不需要担心浏览内存管理。 如果一个站点使用越来越多内存,这意味着没有人收集它并且存在内存泄漏。...Detached DOM nodes 分离 DOM 节点是一个关键问题。 由于全局引用,分离节点仍然存在于内存。...score,也就是内部函数,有一个全局引用,叫做initial。...Tools to identify memory leaks 意外全局变量 内存泄漏可以通过分析轻松检测到。 我们举一个代码片段例子,它会因为全局变量而导致内存泄漏。

1.9K30
领券