Kaj*_*una 4 android oncreate android-lifecycle onpause
我正在开发一个针对 Api 19 的应用程序,它基本上是一个处理草图。
我面临的问题是我的应用程序第一次运行时,在安装后,它运行良好,直到用户将其发送到后台。然后,如果他们再次单击应用程序图标,则调用 onCreate() 但活动不会被销毁或重新启动。一些变量会发生变化,从而产生奇怪的行为。
这仅在第一次使用该应用程序时发生。强制关闭它后,这种行为不会再发生(据我测试)。从 Eclipse 启动应用程序时也不会发生这种情况。
总而言之,这是第一次强制关闭后发生的情况(我认为是正确的):
活动正在运行。
活动通过主页按钮返回
暂停()
我们再次点击应用程序图标
onResume()
这就是 - 仅 - 安装后第一次运行应用程序时发生的情况:
活动正在运行。
活动通过主页按钮返回
暂停()
我们再次点击应用程序图标
onCreate() <-- !! 注意没有 onDestroy()
onResume()
我想知道我使用沉浸式模式是否与此有关,但是将 Api 目标版本更改为 10、删除沉浸式模式或在旧设备上进行测试都无济于事。当然,我在清单上使用了android:configChanges="orientation|keyboardHidden|screenSize"。
有没有人知道可能导致这种情况的原因?这是一个常见问题还是我应该在我的代码中查找错误?也许是处理错误?
提前感谢您提供任何线索。我希望这是询问这个问题的正确方式。这是我的第一篇文章。
更新: 我的解释不是很准确,但显然有一个错误报告。这个问题在这里解释得更好:https : //code.google.com/p/android/issues/detail?id=26658
不幸的是,我无法使建议的解决方案起作用,在 onCreate() 中使用它会导致我的应用程序关闭或崩溃:
if (!isTaskRoot()) {
  finish();
  return;
} 
好的,这就是我解决它的方法,以防其他人撞到这堵墙。
这可能会特别影响来自处理开发环境的人员,因为它将“处理草图”转换为项目的唯一活动。
原始问题(Android 在从包安装程序启动应用程序时以不同的 -wrong?- 方式管理应用程序)在这里得到了很好的解释:https : //code.google.com/p/android/issues/detail ?id=26658
发布在那里的解决方案可能会解决大多数情况,但是如果 - 像我一样 - 您的启动器活动是执行所有工作的启动器活动,您将需要创建一个特定的启动器活动来启动主要活动......并在发生Android错误。
将此位添加到启动器活动的 onCreate() 方法中:
if (!isTaskRoot()) {
 finish();
 return;
} 
我希望这有帮助。
| 归档时间: | 
 | 
| 查看次数: | 5913 次 | 
| 最近记录: |