前言
应用连续性是折叠屏手机的一大亮点,当在折叠态、展开态之间切换时,应用保持运行状态,并会自动调整大小以匹配新的布局。为了保证开发者的应用程序在展开/折叠过程无缝切换,开发者需要做应用连续性的设计,以确保应用程序任务不中断。以Mate X为例,最佳的体验为,应用在展开切换过程中,不发生应用的重启,且切换之前的任务和应用相关状态得以保存和延续。
折叠展开的动作,会触发对smallestscreensize、screensize和screenlayout的配置更改。每当发生配置更改时,默认情况下会销毁并重新创建整个activity。
推荐开发者通过注册监听系统configchanges消息,不重启应用的情况下处理配置更改,开发者需要向menifest中添加android:configchanges属性,其中至少包含以下值:
开发者需要复写 onConfigurationChanged() 方法,通过该方法的Configuration参数获得屏幕的分辨率等信息,就可以针对不同比例屏幕下的应用界面布局做相应调整,如切换布局、调整控件位置和间距等。
如果应用必须进行重新走生命周期来以响应屏幕切换,需要进行状态的保存和恢复。
开发者可以通过OnSaveInstanceState()和ViewModel对象来进行之前状态保存和后续的恢复。即在销毁activity之前,通过onSaveInstancesState()存储状态, 在onCreate() oronRestoreInstanceState()进行状态的恢复。
Note:不要在OnDestroy()中调用finish()或其他自行终止进程。这将导致应用程序在设备折叠或展开时关闭、闪退等问题。
详细信息请参阅Android开发者指南:
https://developer.android.com/guide/topics/resources/runtime-changes
在这个新兴的外形尺寸上,要在从一个屏幕切换到另一个屏幕时提供出色的用户体验,对开发者而言是个不小的挑战。为避免用户体验因应用切换屏幕而受到影响,请开发者确保应用能够妥善处理运行时配置变更。以上内容为折叠屏开发指导之应用连续性内容,后续软件绿色联盟会继续发布应用内分屏、分屏和悬浮窗、开发调试等内容的深度解读文章.
End