V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shijingshijing
V2EX  ›  程序员

关于 Android 的 Activity 周期的问题。

  •  
  •   shijingshijing · 2018-09-12 22:23:11 +08:00 · 1078 次点击
    这是一个创建于 2065 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天仔细研究了一下 Activity 周期,有一个问题没弄清楚,想请教一下。

    App 有两个 Activity,一个叫 MainActivity,一个叫 ChildActivity,如下:

    MainActivity:

    ChildActivity:

    其中 ChildActivity 的"第 3 次点击"是对应保存在 MainActivity.java 这个 Class 里面的一个 static int 型变量。

    现在想实现的效果是:
    1.按“启动”按钮之后,从 MainActivity 跳转至 ChildActivity,点击次数加 1。
    2.按“返回”键之后,从 ChildActivity 返回至 MainActivity,次数不清零,再次点击“启动”按钮后,点击次数在原来基础上再加 1。
    3.按"Home"键之后,从当前的 Activity 跳到手机 Home 屏,这时候次数清零,再通过点击 Home 屏图标进入 App 时,点击次数重置为 0。

    按照 Android 的生命周期那个图,
    如果把 ClickCount=0 语句放在 onCreate 里面,则上面效果 3.无法实现,跳转至 Home 屏后不会清零;
    如果把 ClickCount=0 语句放在 onStart 或者里面,则每次点击按钮后都会重置为 0 ;
    如果把 ClickCount=0 语句放在 onResume 或者里面,则每次点击按钮后都会重置为 0 ;
    如果把 ClickCount=0 语句放在 onPause 里面,则每次点击按钮后都会重置为 0 ;
    如果把 ClickCount=0 语句放在 onStop 里面,则每次点击按钮后都会重置为 0 ;
    如果把 ClickCount=0 语句放在 onDestroy 里面,则上面效果 3.无法实现,跳转至 Home 屏后不会清零;

    现在想问一下,到底怎么处理能够实现上面的效果呢?

    4 条回复    2018-09-12 23:15:28 +08:00
    carpediemvv
        1
    carpediemvv  
       2018-09-12 22:36:44 +08:00 via Android   ❤️ 1
    描述啰嗦不清,想要搞清楚生命周期打印一下就可以了。你是遇到难题想这么解决了吧?
    cinhoo
        2
    cinhoo  
       2018-09-12 22:37:25 +08:00 via iPhone   ❤️ 1
    http://www.cnblogs.com/zhujiabin/p/9336663.html
    监听 app 退到后台清零?
    nicevar
        3
    nicevar  
       2018-09-12 23:07:04 +08:00   ❤️ 1
    你描述的太啰嗦了,弄个基类 BaseActivity 就能解决了,能记录 activity 全部过程,至于 home 键是可以监听的
    maninfog
        4
    maninfog  
       2018-09-12 23:15:28 +08:00 via Android   ❤️ 1
    你需要一个静态变量保存启动次数,并且你需要按照二楼的方法监听前后台切换重置次数。你做的尝试之所以失败是因为在按 home 键会执行除 destroy 之外的方法,所以会清零。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1058 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:31 · PVG 04:31 · LAX 13:31 · JFK 16:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.