根源Android设备会影响其活动生命周期

时间:2015-07-07 15:20:46

标签: android android-lifecycle

我编写了一个用于测试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上

2 个答案:

答案 0 :(得分:0)

您的问题涉及两个不同的生命周期事件。

  1. 活动A启动活动B.以下是手册所说的内容:
  2.   

    当活动A启动活动B时,活动A停止,但是   系统保留其状态(例如滚动位置和输入的文本   形式)。如果用户在活动B中按下后退按钮,   活动A恢复其状态恢复。

    1. 从活动B,用户按下后备堆栈中的弹出活动A:
    2.   

      如果用户按下“返回”按钮,则会弹出当前活动   从堆栈中摧毁。堆栈中先前的活动是   恢复。当一个活动被销毁时,系统不会保留该活动   活动的状态。

      目前还不清楚您所说的哪一项似乎无法在有根设备上正常运行。但是,我怀疑你是在混淆两者,事情是否正常。

      编辑:

      您的评论表明对手册中使用的语言与生命周期方法名称的混淆。当手册说(在案例1中)活动停止时,这并不意味着onStop()。该描述的上下文指示将调用onPause() - 如果用户按下后退按钮,则活动将恢复,建议将调用onResume()。要转换到onStop()并因此需要转换回onRestart()以恢复应用程序,后端堆栈将需要丢失更多上下文 - 因为用户完全退出正在运行的应用程序(因此它不再有意义保持它的堆栈并开始另一个。

答案 1 :(得分:0)

告诉我们应用程序运行的2个内容:

您拥有的设备,版本/内部版本号和制造商

另一台设备,版本/内部版本号和制造商。

根据我的经验,到目前为止,同一台设备在由不同制造商组装后随着操作系统的改变而改变,有时候会以主要方式改变。 我有一个使用SMS系统的应用程序,由于制造商覆盖了用户权限,因此无法在特定系统中启动。

同样,可以有以下改变行为的内容:

  • 设备内存少于可用内存,并杀死活动以释放内存
  • 设备隐藏用户可以更改应用流程
  • 设备有“
  • 设备有不同的编译库,其功能无序(或已被替换)

为了绕过这些问题,我建议查看onPause()和onResume(),因为它们似乎在不同的设备和不同的操作系统check this for additional aid上表现得更近。如果您需要onStop()单独的onPause,您可能需要“分支”您的应用程序,对每个版本进行细微的代码更改