我编写了一个用于测试life cycle
方法的测试应用程序。申请开始活动' B'来自一项活动' A'。根据我在developer's manual中所学到的,' A'应该停下来,然后' B'创建了,但我的设备有不同的行为,' A'暂停和' B'在' B'弹出了后面的堆栈onResume()
方法' A'被叫了。现在我在我父亲的设备上运行了相同的应用程序,它给出了预期的结果。我的问题是根本改变设备的life cycle
,如果有的话,我可以做到这一点"正常"没有取消root设备的生根。提前谢谢。
日志文件的屏幕截图为here
编辑:我的设备,moto x第一代(xt1052)运行在android 4.4.4上,我爸爸的设备,moto g第一代运行在android 5.0,2上
答案 0 :(得分:0)
您的问题涉及两个不同的生命周期事件。
当活动A启动活动B时,活动A停止,但是 系统保留其状态(例如滚动位置和输入的文本 形式)。如果用户在活动B中按下后退按钮, 活动A恢复其状态恢复。
如果用户按下“返回”按钮,则会弹出当前活动 从堆栈中摧毁。堆栈中先前的活动是 恢复。当一个活动被销毁时,系统不会保留该活动 活动的状态。
目前还不清楚您所说的哪一项似乎无法在有根设备上正常运行。但是,我怀疑你是在混淆两者,事情是否正常。
编辑:
您的评论表明对手册中使用的语言与生命周期方法名称的混淆。当手册说(在案例1中)活动停止时,这并不意味着onStop()。该描述的上下文指示将调用onPause() - 如果用户按下后退按钮,则活动将恢复,建议将调用onResume()。要转换到onStop()并因此需要转换回onRestart()以恢复应用程序,后端堆栈将需要丢失更多上下文 - 因为用户完全退出正在运行的应用程序(因此它不再有意义保持它的堆栈并开始另一个。
答案 1 :(得分:0)
告诉我们应用程序运行的2个内容:
您拥有的设备,版本/内部版本号和制造商
另一台设备,版本/内部版本号和制造商。
根据我的经验,到目前为止,同一台设备在由不同制造商组装后随着操作系统的改变而改变,有时候会以主要方式改变。 我有一个使用SMS系统的应用程序,由于制造商覆盖了用户权限,因此无法在特定系统中启动。
同样,可以有以下改变行为的内容:
为了绕过这些问题,我建议查看onPause()和onResume(),因为它们似乎在不同的设备和不同的操作系统check this for additional aid上表现得更近。如果您需要onStop()单独的onPause,您可能需要“分支”您的应用程序,对每个版本进行细微的代码更改