A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

11信仰11

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 11信仰11 初级黑马   /  2017-11-28 19:14  /  1208 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2017-11-29 16:32 编辑

          一个 Activity 本质上只有三种状态:
    Resumed(运行)、Paused(暂停)、Stopped(停止),因为从 Activity 被创建之后,它只可能在这三
种状态保持长久的停留,其他的回调方法结束后的状态都只能称之为过渡状态。比如进入到 onStart 方法后,
执行完该方法,会立即进入到 OnResume 方法。(这里所说的状态都是指对应的某个方法返回之后)
即使一个 Activity 进入到 Paused 或者 Stopped 方法,它仍然是存在的,被保存在任务返回堆栈中。
它仍然保持着自身的所有实例和状态,所以根本不用担心它在返回到 onResume 方法时,实例会变为 null,
或者控件的事件监听不了(我以前就担心过这个问题)。唯一需要考虑的就是,系统在内存不足的情况下,
杀死在 Paused 或者 Stopped 状态下的 Activity。
     当一个 Activity 在 Resumed 状态下,它是不会因内存不够而被系统直接杀死(在极端的情况下也有可
能被杀死,但是一般不会考虑这种情况)。只有进入 Paused 或者 Stopped 状态才会,而且可能根本就不会
去调用 onStop()和 onDestory()方法,所以 onPause()方法是我们最大程度上保证 Activity 在销毁之前能够执
行到的方法。因此,如果你的某个 Activity 需要保存某些数据到数据库,您应该在 onPause()里编写持久化
数据的代码。但要注意,你应该选择哪些信息必须保留在 onPause(),因为这个方法任何阻塞程序都会阻止
过渡到下一个 Activity,这样给用户体验就感觉十分缓慢

1 个回复

正序浏览
棒棒的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马