Android Dalvak虚拟机内存回收规则
2016-03-31 16:13
183 查看
首先了解Activity生命周期中的四种状态:
1、活动(active)状态:
当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点,能响应用户的操作,属于运行状态,同一个时刻只会有一个Activity 处于活动(Active)或运行。
2、暂停(paused)状态:
当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。
3、停止(stoped)状态:
完全被另一个Activity遮挡时处于停止状态,它仍然保留着所有的状态和成员信息,只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。
4、非活动(dead)状态:
Activity 尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity,可以在程序中调用"finish"方法,如果是(按根据内存不足时的回收规则)
被系统回收,可能是因为内存不足了。
内存不足时,Dalvak 虚拟机会根据其内存回收规则来回收内存:
1、空进程
2、不可见进程(处于stoped状态)
3、服务进程
4、可见进程(处于paused状态)
5、活动进程(处于active状态)
1、活动(active)状态:
当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点,能响应用户的操作,属于运行状态,同一个时刻只会有一个Activity 处于活动(Active)或运行。
2、暂停(paused)状态:
当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。
3、停止(stoped)状态:
完全被另一个Activity遮挡时处于停止状态,它仍然保留着所有的状态和成员信息,只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。
4、非活动(dead)状态:
Activity 尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity,可以在程序中调用"finish"方法,如果是(按根据内存不足时的回收规则)
被系统回收,可能是因为内存不足了。
内存不足时,Dalvak 虚拟机会根据其内存回收规则来回收内存:
1、空进程
2、不可见进程(处于stoped状态)
3、服务进程
4、可见进程(处于paused状态)
5、活动进程(处于active状态)
相关文章推荐
- android 真机调试
- Android开发学习笔记:数据存取之SQLite浅析
- java Android 中的字符串比较和double类型转换为两位小数点
- Android TextView系列--第一篇
- android 启动报错
- Android 蓝牙开发基本流程
- 重温android studio jni编译生成so文件
- Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
- Android AsynTask源码分析和优缺点
- Android MVP设计的简单理解
- Android 数据操作之SQLiteDatabase
- android 图片压缩
- 笔记 Android广播初使用
- android 百度地图
- Android程序安装后应用图标不显示
- Android几种弹窗的实现
- Android Studio Ndk 编程
- 【Android】AlarmManager 实现提醒一次,每天提醒,周自定义提醒,月自定义提醒
- Android Studio 导入项目说明
- Using Multiple Android Studio Versions