随笔- 170  评论- 6  文章- 31 
  2019年12月6日
正文内容加载中...
posted @ 2019-12-06 14:49 mingfeng002 阅读 (2) 评论 (0) 编辑
摘要:ThreadLocal 可以把一个对象保存在指定的线程中,对象保存后,只能在指定线程中获取保存的数据,对于其他线程来说则无法获取到数据。 日常开发中 ThreadLocal 使用的地方比较少,但是系统在 Handler 机制中使用了它来保证每一个 Handler 所在的线程中都有一个独立的 Loop 阅读全文
posted @ 2019-12-06 10:46 mingfeng002 阅读 (19) 评论 (0) 编辑
  2019年11月8日
摘要:一、认识Future 1.创建Future 这里的执行结果是: Futue直接new就可以了。 我这里没有具体的返回数据,所以就用匿名函数代替了, Future future = new Future(() => null);相当于 Future<Null> future = new Future( 阅读全文
posted @ 2019-11-08 16:03 mingfeng002 阅读 (9) 评论 (0) 编辑
  2019年10月29日
摘要:第一点:push使用 1.pushNamed——Navigator.of(context).pushNamed('routeName') Navigator.of(context).pushNamed('/screen1'); 直接进入screen1页面(每次都将新建一个新的页面) 2.pushRe 阅读全文
posted @ 2019-10-29 17:21 mingfeng002 阅读 (35) 评论 (0) 编辑
摘要:前面,我们已经知道如何简单在路由栈中 push、pop 实例,然而,当遇到一些特殊的情况,这显然不能满足需求。学习 Android 的同学知道 Activity 的各种启动模式可以完成相应需求,Flutter 当然也有类似的可以解决各种业务需求的实现方式! 请看下面使用方法与案例分析。 1.1 pu 阅读全文
posted @ 2019-10-29 17:21 mingfeng002 阅读 (108) 评论 (0) 编辑
  2019年10月28日
摘要:standerd 默认模式,每次启动Activity都会创建一个新的Activity实例。 比如:现在有个A Activity,我们在A上面启动B,再然后在B上面启动A,其过程如图所示: singleTop 如果要启动的Activity已经在栈顶,则不会重新创建Activity,只会调用该该Acti 阅读全文
posted @ 2019-10-28 18:12 mingfeng002 阅读 (25) 评论 (0) 编辑
摘要:场景分析 下面通过启动Activity的代码来分析一下: 1.桌面 首先,我们看下处于桌面时的状态,运行命令: 结果如下 实际上就是如下图所示的结构,这里的Stack #0就是ActivityStackSupervisor中的mHomeStack,mHomeStack管理的是Launcher相关的任 阅读全文
posted @ 2019-10-28 18:12 mingfeng002 阅读 (33) 评论 (0) 编辑
摘要:这里对启动Activity过程中涉及到的ActivityStack、TaskRecord、ActivityRecord、ActivityStackSupervisor进行简单的分析,实际上一张时序图就可以看明白了。相关的代码都在上面了:代码分析 sequenceDiagramparticipant 阅读全文
posted @ 2019-10-28 18:12 mingfeng002 阅读 (19) 评论 (0) 编辑
摘要:Gradle原理动画讲解 阅读全文
posted @ 2019-10-28 14:49 mingfeng002 阅读 (8) 评论 (0) 编辑
摘要:一、Gradle 的启动 1.1 整体实现图 1.2 具体分析 我们执行一个构建任务的时候,都是执行 ./gradlew assembleDebug 这样的命令,其中的 gradlew 脚本就是整个 gradle 构建的入口,我们先从这里看起。 前面的代码基本上就是判断环境,设置变量的,直接看最后一 阅读全文
posted @ 2019-10-28 14:47 mingfeng002 阅读 (17) 评论 (0) 编辑