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

Android 12上全新应用启动画面,还不适配一下?

App主要内容展示之前,按照需求不同,或多或少会先展示这样几个画面。...定制退出效果 当App第一帧开始描画,SplashScreen将会退出展示。为了丰富退出环节体验,系统也开放了相应入口,即画面退出。...简言之,退出画面时候Icon动画可能进行到了一半,最好计算Icon动画剩余时长来执行退出动画。 原因在于设备性能会影响App描画早晚,而第一帧描画时候上述退出将被执行。...此时Icon动画尚在进行当中,可以将Icon动画预设时长剩余时间交接给退出效果来执行 性能差的话,画面退出稍晚。...结语 Android 12上全新SplashScreen API非常简单清晰,整个定制过程非常流畅! 相信全新API加持下,APP启动画面可以迸发出更多特色、好玩创意。

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

Kotlin 协程】协程底层实现 ① ( Kotlin 协程分层架构 | 基础设施层 | 业务框架层 | 使用 Kotlin 协程基础设施层标准库 Api 实现协程 )

文章目录 一、Kotlin 协程分层架构 二、使用 Kotlin 协程基础设施层标准库 Api 实现协程 一、Kotlin 协程分层架构 ---- Kotlin 协程分层架构 : Kotlin 中...协程 上层实现 ; 基础 Api 基础上 进行了一层封装 , 形成了方便开发者使用框架 ; 基础设施层 : 基础设施层 协程基础 Api 定义 kotlin.coroutines.*...Continuation 泛型 表示是协程体返回值类型 ; 协程执行完毕, 将协程执行结果返回 , 此时 override fun resumeWith(result: Result...// 协程执行完毕, 将协程执行结果返回 // 该函数是一个函数 override fun resumeWith(result: Result) {...协程基础 Api 定义 kotlin.coroutines.* 包下 ; import kotlin.coroutines.* 业务框架层 : 如果调用 常见协程 Api , 调用是 业务框架层

76110

使用 Jetpack ActivityResult 处理 Activity 之间数据通信

作者 / Yacine Rezgui 无论您是应用中请求某项权限,文件管理系统中选择某个文件,还是期望第三方应用中获取到某些数据,都会涉及到 Activity 之间传递数据,而这也正是 Android...basics/intents/result#custom ActivityResult API 提供了一些组件用于注册 Activity 处理结果、发起请求以及系统返回结果立即进行相应处理。...-> // 处理返回 Uri } https://developer.android.google.cn/reference/kotlin/androidx/activity/result...Activity,就会携带着预期结果执行您之前注册函数。...正如您看到代码片段,ActivityResult 处理来自 Activity 返回数据时带来了更便捷开发体验。

86630

使用协程和 Flow 简化 API 设计

如果您是库作者,您也许希望用户使用 Kotlin 协程与 Flow 时可以更加轻松地调用您基于 Java 或 API。...Android 专用 API 对于 Jetpack 库或 Android 平台 API,您可以参阅 Jetpack KTX 库 列表。... 是实现异步通讯时非常常见做法。事实上,我们 后台线程任务运行指南 中将回作为 Java 编程语言默认解决方案。然而,也有许多缺点: 这一设计会导致令人费解嵌套。...同时,由于没有简单传播方式,错误处理也更加复杂。 Kotlin 中,您可以简单地使用协程调用回,但前提是您必须创建您自己适配器。...suspendCancellableCoroutine 处理协程作用域取消及底层 API 传播取消事件。

1.6K20

Android | Jetpack 处理回退事件新姿势 —— OnBackPressedDispatcher

首先, Fragment attach 时,会创建一个对象加入分发器,调处理时弹出返回栈栈顶事务。不过初始状态是未启用,只有当事务添加进返回栈,才会修改回对象为启用状态。...因为这些 API 表现并不理想: 1、当调用 Activity 不位于栈顶时,杀死进程系统会立即重新启动 App(可能是系统认为 前台 App 是意外终止,会自动重启); 2、当 App 退出,...这里其实是使用了 ViewBinding + Kotlin 委托属性视图绑定方案,相对于传统 findViewById、ButterKnife、Kotlin Synthetics 等方案,这个方案多个角度上表现更好...该 API API 16 引入,最好通过 ActivityCompat.finishAffinity() 调用。...该 API API 21 引入,最好通过 ActivityCompat.finishAfterTransition() 调用。 ---- 5.

1.3K20

Android 移动应用性能优化 之 友盟

这个问题一般来说开发时候做得好可以避免90%出现概率。最大出现情况就是赋值时候,只要出现这个,那么对应就是你程序闪退了,哦豁!这个月奖金又没了,打工人辛酸,留下了悔恨泪水。...所以使用Java开发Android时候要特别注意这一点,注意null。这一点Kotlin就做很好,因为空安全这个特性。...("mCallNativeDefaultHandler",true); CrashApi.getInstance().updateCustomInfo(customInfo);   崩溃...(自定义字段) //崩溃 UMCrash.registerUMCrashCallback(new UMCrashCallback(){ @Override...最后这个自定义字段,很明显就是代码中写一个崩溃。   这说明我自己写日志也上传了。

38210

微信支付WXPayEntryActivity 不回

微信支付同步不回问题记录 1.微信支付官方文档 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?...chapter=8_5 第三方东西都是比较简单,直接看官方文档就可以,无论支付宝支付还是微信支付,客户端工作量要小于服务端 有同步结果和异步结果,一般官方建议以异步结果为准,所以我们同步结果判断支付成功...微信支付对接时,遇到了同步都不回问题,按照上述官方文档所说。...类接收回方法,但包名并不是net.sourcefogr.simcpux,而是你自己项目的包名,比如gradle中你appid为com.test,那么你WXPayEntryActivity就应是com.test.wxapi.WXPayEntryActivity...,同时记得该Activity配置文件中添加 ... android:exported="true" android:launchMode="singleTop" >

1.8K20

干货 | 携程机票 App KMM 跨端生产实践

我们需要将这些已有的基础库通过桥、封装包装出 KMM API,提供给 Kotlin Common source set 调用,而这些库本身相似设计给我们提供了极大封装便利。...接着使用一些顶层函数来桥 MMKV 静态函数,用扩展函数来桥 MMKV 不同平台成员函数,Android 如下: internal actual fun defaultMMKV(): MMKV...对象)作为参数传入,然后中拿到 response entity 即可处理网络返回结果。...KMM 网络框架设计如图下图所示: 解决了序列化与反序列化问题,我们还要将原先调式 API 封装成 Kotlin suspend API,以便将其更好纳入协程结构化并发体系: // 原 Java...执行异步任务中将对象子图重新绑定,最终再使用 GCD 重新切换回主线程(同样要做对象子图分离与绑定)恢复协程。

3.1K10

前面的注解处理器教程涉及到 Tieguanyi 框架现在怎么样了?

实例因各种原因(例如开发者选项中”不保留活动“开启时)被销毁, EditUserActivity 返回时, UserActivity 被重新创建,导致之间(匿名内部类、Lambda 表达式...外部 View 实例,通常也是所在 Activity 当中 View,更新实例时,我们通过 View id 来索引,因此如果布局当中有重复 id,可能将无法更新到正确实例而产生问题...尽管理论角度,这个更新实例方法较为可靠,但毕竟这个功能比较 Tricky,如果大家使用过程中发现调调用之后没有反应,那么请开 Issue 一起讨论解决方案。...API 28 开始,Android 废弃了 android.app.Fragment 相关 API,转而推荐使用 support-fragment,同时由于框架本身也需要监听 Fragment 生命周期...,因此我们对于 android.app.Fragment不予支持,请谅解。

58310

《Node.js 极简教程》 东海陈光剑

事件驱动模型当中,每一个IO工作被添加到事件队列中,线程循环地处理队列上工作任务,当执行过程中遇到来堵塞(读取文件、查询数据库)时,线程不会停下来等待结果,而是留下一个处理结果函数,转而继续执行队列中下一个任务...这个传递到队列中函数堵塞任务运行结束才被线程调用。...优点 高并发(最重要优点) 适合I/O密集型应用 RESTful API npm,前后端分离 缺陷 模式下异步是有明显缺陷,程序执行顺序必须依靠调来保证,没有层层,就没有可以保障逻辑顺序...山真不是必须。 不适合CPU密集型应用 只支持单核CPU,不能充分利用CPU 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃,原因:单进程,单线程。...因此,阻塞是按顺序执行,而非阻塞是不需要按顺序,所以如果需要处理函数参数,我们就需要写在函数内。

1.5K30

Fragment初识

概述 官方API ---- Fragment是什么 Android Android 3.0(API 11 级)中引入了Fragment,主要是为了给大屏幕(如平板电脑)上更加动态和灵活 UI 设计提供支持...例如:新闻应用可以使用一个片段左侧显示文章列表,使用另一个片段右侧显示文章—两个片段并排显示一个 Activity 中,每个片段都具有自己一套生命周期方法,并各自处理自己用户输入事件。...也就是说,由于每个片段都会通过各自生命周期调来定义其自己布局和行为,您可以将一个片段加入多个 Activity,因此,您应该采用可复用式设计,避免直接某个片段直接操纵另一个片段。...其实都可以,前面说过Fragment是Android 3.0(API 11)引入,那么如果开发app需要 3.0以下版本运行呢?比如还有一点点市场份额2.3!...---- ②Fragment传递数据给Activity: Fragment中定义一个内部接口,再让包含该FragmentActivity实现该回接口, Fragment就可以通过接口传数据了

1.2K20

如何在小程序中引入自有 API

扩展api名称 @param handler @return 返回注册结果 */ - (BOOL)registerExtensionApi:(NSString *)extApiName.../// 为HTML 注册要调用原生 api /// @param webApiName 原生api名字 /// @param handler - (BOOL)fat_registerWebApi...使用 Flutter 接入的话,自定义 API 是否支持通过 Success 方法接收 Flutter 数据 答案是支持。...Android小程序SDK是多进程架构,小程序和宿主App处于不同进程中,所处任务栈自然也是不同。...小程序跳转到宿主App页面,新打开页面是添加到宿主App原有的任务栈中,当页面返回时,执行逻辑是原生App中原有的任务栈中弹出页面,因此会看到原生App页面被逐个关闭,最后返回到原生应用启动小程序页面

70310

一文帮你搞定H5、小程序、Taro长列表曝光埋点

_observer.disconnect() Tips 注意:组件内,如果在attached组件生命周期函数内添加内部子元素相交变化观察可能无法监听成功,原因是此时组件布局还未完成,组件内节点未完成创建...Intersection Observer API小程序端由于标准对齐,基本上就是桥对应平台小程序原生接口。...监听不生效问题 由于Taro运行时机制,Taro组件数据更新方法(例如setState)执行立刻添加监听可能会不生效,原因是对应由数据驱动小程序元素实例此时未完成创建或挂载,需要添加延迟或在...如果创建及设置正确,随着列表滑动或其他元素位置变化,对应方法应该会被触发,方法内需要接收回入参数并进行处理(例如上报相关业务信息)。...参数中虽然没有想要自定义数据字段,但是可以拿到节点id信息,可以通过Taro提供document.getElementById();API利用节点id获取对应Taro虚拟DOM节点,该节点上拿到需要

66520

还有Android 11权限变更讲解

对于高阶函数中接收函数类型参数,我们可以直接传入一个Lambda表达式,然后Lambda表达式当中处理逻辑即可。...但是如果我们Android 11系统中同时申请前台和后台定位权限会怎么样呢?很遗憾地告诉你,会崩溃。...PermissionX中有很多可以注册调监听地方,权限被拒绝时有,权限被永久拒绝时有,权限申请结束时有。...而在代码逻辑中去通知这些地方就更多了,传入一个空权限列表是不会进行权限请求,直接回结束。传入权限列表如果全部都已经授权了,也会直接回结束。...那么如此复杂逻辑带来了一个什么问题?我很难找到一个切入点去判断除了后台定位权限之外其他权限都处理完了(那么多点都需要处理),然后再单独去申请后台定位权限。

1.5K30

kotlin混淆mapping定位

大家新年好,这个文章聊下kotlinmapping文件定位,以具体一个线上崩溃为例 线上崩溃日志 Caused by: java.lang.IndexOutOfBoundsException: toIndex...代表是一个方法,或者变量,这里实际是一个方法,因为有前后调用堆栈,这里调用到sublist方法导致崩溃,最后kt:12代表是混淆行数是12行 解析mapping,定位具体代码 接下来,我们打开...():185:186 -> i,混淆12:13对应真实行数是185:186,所以实际崩溃就是185行 看下对应源码 源码这里也有调用到sublist方法,跟崩溃调用方法一致,于是确定是这里导致崩溃了...handler,继续去mapping文件搜索b.a.a.a.p.f0 找到了很多run调用,而方法后面有这个lambda:6,我们找对应6这个地方,找到了 6:6:void com.ygp.mro.app.search.SearchRecordFragment...找到了调用代码了 所以结果是151行调用initListShowExpand方法,然后方法内部185行发生了崩溃

79310

实测Android音频焦点获取和归还

如果按照本指南中说明设计应用,则应在媒体会话 onPlay() 中调用 requestAudioFocus()。 在其他应用获得音频焦点时,停止或暂停播放,或降低音量。...不同版本音频焦点处理方式不太相同: Android 2.2(API 级别 8)开始,应用通过调用 requestAudioFocus() 和 abandonAudioFocus() 来管理音频焦点...应用还必须为这两个调用注册 AudioManager.OnAudioFocusChangeListener,以便接收回并管理自己音量。...(2) AUDIOFOCUS_GAIN_TRANSIENT:表示申请一个短暂音频焦点,并且马上就会被释放,此时希望上一个持有音频焦点App暂停播放。例如播放一个提醒声音。...AudioManager.OnAudioFocusChangeListener :当音频焦点发生变化时进行 onAudioFocusChange(int focusChange) 方法; new

3.4K30
领券