家资是何物,积帙列梁梠。这篇文章主要讲述Android测试的坑——屏幕翻转相关的知识,希望能为你提供帮助。
文章图片
背景最近在看android开发,发现有一些坑是没有了解过Android开发是无法发现的,简单的记录一下。
场景用Android开发一个回答问题的APP,大概有5个问题,回答完毕后切换到下一题,或者手工跳到下一题。整个APP功能很简单,但是依然有很多的坑。
翻转屏幕后问题被重置为第一题这个问题是一个很有意思的问题,在竖屏的时候查看第四题,但是在横屏之后,问题被重置为第一题了。
要了解这个问题,就必须了解Android中Activity的声明周期。Android中Activity有如下的生命周期:onCreate、onStart、onResume、onPause、onStop、onDestroy。
- 理解Android的生命周期的变化
12-13 17:15:22.714 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onCreate(Bundle) called
12-13 17:15:22.754 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStart() called
12-13 17:15:22.754 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onResume() called
这个时候,把屏幕翻转,日志信息如下:
12-13 17:16:37.354 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: nCreate(Bundle) called
12-13 17:16:37.404 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStart() called
12-13 17:16:37.404 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onResume() called
12-13 17:16:39.494 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onPause() called
12-13 17:16:39.494 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStop() called
12-13 17:16:39.494 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onDestroy() called
12-13 17:16:39.514 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: nCreate(Bundle) called
12-13 17:16:39.514 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onStart() called
12-13 17:16:38.514 22987-22987/com.example.svenweng.geoquiz D/QuizActivity: onResume() called
从日志我们就可以清楚的看到在执行翻转的时候,系统对原来的Activity进行了销毁的处理,也就是执行了onPause、onStop和onDestroy。之后又执行了onCreate、onStart和onResume。重新创建了一个Activity。
- 分析问题
- 修复问题
- 衍生拓展
翻转屏幕后布局显示的不正确正常我们看到的界面,是用代码在xml布局文件中写的。一般来说,这个布局是针对竖屏状态的。如果页面翻转后变为横屏,这时Android系统会根据竖屏的布局文件来自动做横屏适配,这种适配有时候会出现控件分布与预期不一致。
- 分析问题
我们可以根据页面来做分析,可以让开发专门针对横屏的特点进行编写横屏的布局文件,让横屏之后页面的布局由横屏布局文件来控制,以便达到我们想要的效果
另一种方式可以根据需求判定,是否禁止用户进行横屏操作。
- 衍生拓展
总结在Android的屏幕翻转的过程中比较容易出现奇怪的问题,而且翻转的过程中容易出现一些小问题,而且这些问题往往很容易被忽视。
【Android测试的坑——屏幕翻转】在测试过程中,最好针对每个页面进行分析,是否允许翻转,页面是否会存在中间变量,在翻转的过程中是否有保存。
推荐阅读
- Android图表 MPAndroidChart折线图
- Android Service和Thread的关系
- Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架
- Android快速开发偷懒必备 支持DataBinding啦~爽炸,一行实现花式列表
- Android评论图片可移动顺序选择器
- React Native Android 应用层实战沦陷记
- Android RecycleView + CardView 控件简析
- android之网络编程
- Android中AlarmManager使用示例(持续更新)