关闭

Processes and Application Lifecycle

标签: activityandroid进程优先级
159人阅读 评论(0) 收藏 举报
分类:

Processes and Application Lifecycle

在大多数情况下,Android应用程序运行在单独的Linux进程中,该进程一直运行直到该进程不需要再继续运行或者系统内存不足杀死该进程。

Android应用进程的生命周期不是由应用本身管理,而是由系统进行管理,系统根据该应用程序的各个组件来知道该应用程序是否在运行以那些应用程序对用户重要系统的内存还剩多少。应用程序的生命周期受到应用组件的影响(Activity,Service,BroadcastReceiver),不正确的组件使用方式,可能导致正在执行重要任务的应用程序,被系统杀死。一个典型的应用程序生命周期的bug是在BroadcastRecerve的onReceive()方法中启动一个后台线程,然后,在onReceiver()方法返回时,系统认为该BroadcastReceiver不在active,系统就会在内存低的情况下,杀死应用,因此,派生的线程也会被杀死。解决该问题的方法是在BroadcastReceiver的onReceiver()方法启动一个JobService,以至于系统知道该应用程序在执行任务。

为了决定在系统内存底下的时候,android中的那个进程会被杀死,系统根据运行在应用中的组件以及他们的运行状态对应用进程进行重要程度分配。四种不同重要程度的进程分配如下:

1、前台进程(foreground process): 前台进程是正在和用户交互的进程。应用进程满足以下任意一个条件,就被归为前台进程。

1、有在前台显示的activity,该activity获得焦点已经调用过onResume()方法。

2、BroadcastReceiver的onReceiver()方法正在执行。

3、Service的生命周期函数(onCreate(),onStartCommand(),onDestory())

正在执行。

在系统中,这样的前台进程只有很少的部分,只有在内存很少的时候,万不得已才会杀死这样的进程,该种进程在四种进程中最后被杀死以免影响系统用户界面的响应。

2、可见进程(visible process):可见进程正在做用户知道的事情,杀死该进程将会对用户的体验产生很大的负面影响。在以下条件下的进程被认为可见进程。

1、 activity在用户界面上对用户可见但是没有获得用户操作的焦点,(onPause()方法被调用),比如:activity的上面有一个对话框,该activity所在的进程就是可见进程。

2、 前台service就是一种可见进程。它承载的是系统正在使用的一项服务,该服务是用户意识到的比如实时壁纸,输入方法服务等。

这些可见进程在系统中运行的限制没有前台进程多,当系统内存不足时,会杀死该进程以保持前台进程的运行。

3、服务进程(service 进程):服务进程是通过startService()方法启动的服务,该服务进程对用户来说,不可见但是他在后台默默地执行一些重要的工作,比如:网络数据的上传和下载。所以,在系统内存低到不能保存前台进程和可见进程的时候,会把该类进程杀死。长时间运行的service(30min或以上)的进程的优先级会被降低,在缓存进程中,以防止service进程存在内存泄露或者其他方面的问题,而长期消耗内存。

4、缓存进程(cached process):该类进程不是当前需要的,所以,系统在需要内存的时候杀死这些进程。这些进程是唯一一种包含在内存管理中的,一个运行良好的系统拥有多个cached processes ,他杀死进程的时候都是优先杀死oldest进程,除非在非常重要的情况下,系统才会杀死所有cached process以至于要杀死服务进程。 这些cached process 通常包含多个activity实例,这些实例都调用过生命周期方法(onStop()),系统会杀死那些不影响用户体验的activity,当用户重新返回该activity时,会重新创建该activity的实例,你可以恢复该activity的状态该,当该activity实例重新创建的时候。

5、进程优先级可以根据他依赖的其他进程的优先级而增加,例如:A进程bind一个service通过Context.BIND_AUTO_CREATE flag或者用ContextProvider在B进程中,B进程的优先级至少和进程A一样重要。

0
0
查看评论

Application Lifecycle Management(ALM 11) 官方中文版

HP Quality Center 11.0(ALM),是之前QC的升级版本,是一个不错的缺陷管理工具,其上市有一段时间,它助力客户达成:   — 通过对需求测试及缺陷检测的详细追踪改善应用质量   — 根据风险级别调整和确定测试工作优先级,实现资源优化   — 通过对应用交付流程的实时报告增...
  • xifeijian
  • xifeijian
  • 2013-02-26 15:02
  • 5462

Android前后台判断

在开发中来判断前后台,往往用到最多的就是推送,因为奇葩的需求,比如说,手机在前台时,推送的提示弹出一个对话框,在后台时就显示在通知栏中,当然了判断前后台的代码网上有太多太多,有的是定义一个静态的变量,在父类中进行赋值,这样做是可取的,但是如果有很多父类,还有就是,我们应用跳到了别的应用里,打开的不是...
  • ming_147
  • ming_147
  • 2016-08-30 17:06
  • 391

QC11新特性 【】HP Application Lifecycle Management 11.00

完整PDF版本下载地址: http://files.cnblogs.com/testware/QC11_Whats_New.pdf   QC11新特性 继QC11的下一个版本,HP已经把名字改为HP Application Lifecycle Manage...
  • CsethCRM
  • CsethCRM
  • 2013-04-26 15:55
  • 1834

Application Lifecycle Management

  • dotrybetter
  • dotrybetter
  • 2015-10-17 10:57
  • 63

Android Application Lifecycle(Finish)

广大博友,看过后帮忙顶顶,谢谢大家!!!转载请注明: http://blog.csdn.net/richway2010/archive/2011/06/29/6574987.aspx【博主:各位博友,网友们,大家网上好!欢迎光临本博客。 欢迎多多交流,多提意见,互相学习,互相进步,我们的口号是:好好...
  • richway2010
  • richway2010
  • 2011-06-29 17:11
  • 3102

spring中的lifeCycle(生命周期)

spring的生命周期. 1.       容器启动,实例化所有实现了BeanFactoyPostProcessor接口的类。他会在任何普通Bean实例化之前加载. 2.    &#...
  • A1023824314
  • A1023824314
  • 2016-11-25 00:20
  • 556

如何知道HP系统运行速度慢的原因

  如何知道系统运行速度慢的原因? 问题描述 我的系统运行速度很慢 -- 如何能够知道哪里出了问题? 配置信息 解决方法
  • lipujun
  • lipujun
  • 2006-09-20 09:51
  • 2291

The Application Lifecycle

http://my.safaribooksonline.com/book/programming/cocoa/9781449355432/4dot-applications-on-os-x-and-ios/the_application_sandbox_on_os_x_and_ios_html?qu...
  • chuanyituoku
  • chuanyituoku
  • 2014-02-11 00:21
  • 415

Application lifecycle

每一个应用都会经历这几个阶段。在每个阶段完成或者过渡的时候,会调用Appdelegate中的方法。 例如,进入Background的时候会调用fun applicationDidEnterBackground(UIApplication)
  • u010998924
  • u010998924
  • 2016-01-12 20:33
  • 251

Android开发 - ActivityLifecycleCallbacks使用方法初探

Android开发 - ActivityLifecycleCallbacks使用方法初探 ActivityLifecycleCallbacks是什么? Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理。 为什么用ActivityLife...
  • tongcpp
  • tongcpp
  • 2014-10-21 14:51
  • 31090
    个人资料
    • 访问:1463次
    • 积分:115
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档