跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个 android 生命周期的问题
未分類
19 10 月 2020

请教一个 android 生命周期的问题

请教一个 android 生命周期的问题

資深大佬 : qwertyegg 6

app 有一个门帘 ActivityOne,会进行一些初始化工作,完成后会进入 app 的主要 Activity,名叫 ActivityTwo

如果在这时,把程序放入后台,长时间的休眠后,回到这个 app,会回到 ActivityTwo

在此时如果我用后退键,会回到 ActivityOne

我的问题是,因为长时间休眠,ActivityOne 会再次调用 onCreate(),我的理解是 ActivityOne 因为休眠被系统干掉了。我有一段初始化的代码,是在 ActivityOne 的 onCreate()里面运行的,可是很显然,我并不希望在 app 从后台唤醒后再次运行这段初始化的代码

我该怎么办呢?

大佬有話說 (10)

  • 主 資深大佬 : qwertyegg

    查了下资料,是不是我在 onCreate()里面检查 savedInstanceState != null 就可以判断这个 ActivityOne 是被系统销毁后重新造的。

  • 資深大佬 : MaL

    ActivityOne 用不到了,不调 finish()么?

  • 資深大佬 : hikari2

    什么手机,有的手机启动程序的时候只启动你的程序,然后你的程序根据你的 manifest 启动你的 LAUNCHER Activity,有的手机会找到你的程序的 LAUNCHER Activity,然后启动你的 activity,这两个从现象上没什么区别。这个是我满满摸索发现的。

  • 資深大佬 : kiroter

    finish

  • 主 資深大佬 : qwertyegg

    @MaL
    @kiroter

    谢谢回复,ActivityOne 并非用不到,因为正常情况下,从 ActivityOne 切换到 ActivityTwo 后,希望 ActivityOne 会在 Activity Stack 上(不知道这么说对不对)。这时可以按 back 键回到 ActivityOne.而从睡眠中唤醒后(此时在 ActivityTwo),按了 back 键也会回到 ActivityOne,但是观察到 ActivityOne 已经被系统销毁,所以会重新调用 onCreate()。

    我查到的办法是用 savedInstanceState != null 是否被系统销毁,然后在 onCreate()里面判断是否重新初始化。finish()按照开发文档说法是不需要 ActivityOne,需要将其关闭的时候调用。

  • 主 資深大佬 : qwertyegg

    @hikari2 谢谢指导,手机是 pixel 3a,我的问题不在于启动程序,而是迷惑于程序在后台被唤醒后(还被杀了 Activity)的行为。

  • 資深大佬 : devfeng

    想不到这是啥场景。你 back 回到 activityone,再自动跳到 activitytwo 吗

  • 主 資深大佬 : qwertyegg

    @devfeng 那段初始化代码会自动跳到 ActivityTwo 。当我用 back 按键从 ActivityTwo 回到 ActivityOne 的时候,并不想重新初始化

  • 資深大佬 : whenwind

    Activity 最好不要作为流程的控制和记录来使用,因为你永远不知道系统会在什么时候给你杀掉。
    如果有需要用到类似跳过 ActivityOne 直达 ActivityTwo 的话我会用 Service,Activity 的行为以 Service 上储存的数据为准,ActivityOne 在询问 Service 已经初始化过了就不执行初始化代码直接进入 ActivityTwo,休眠回来 ActivityTwo 按下返回键询问 Service,如果已经执行过初始化就不执行返回。
    如果不希望使用 Service 的话那把部分初始化代码放在 ActivityTwo 的 onCreate 呢?

  • 資深大佬 : demo06

    你在 1 里面跳转 代码后面加个 finish(),貌似 2 就不会再返回 1 了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具