Android如何管理内存?

时间:2014-09-26 05:50:12

标签: android multithreading memory memory-management android-memory

我正在研究这个主题,因为我想了解更多。所以我发现了以下内容:

Android操作系统基于以下因素重视我们的应用程序:

  1. 前台流程 - onResume()当我们与应用的用户界面进行互动时。 (最高重要性)
  2. 可见流程 - onPause()当某个对话框位于我们当前正在使用的应用上方时。
  3. 服务流程 - 没有与用户界面的互动,但有一项服务运行最好,例如MP3播放器。
  4. 后台进程 - 没有用户界面互动,但有一个线程试图下载图片。
  5. 空流程 - 流程中没有活跃的组件(ActivityServiceContent ProviderBroadCast Receiver)。 (最低重要性 - 将是第一个从内存中删除的内容)
  6. 我必须为这个主题举办研讨会,不言而喻,我需要为上述5个案例中的每个案例举例说明。

    我很难为后台流程提供一个示例。

    因此,对于Android操作系统将应用程序归类为后台进程,则不应该与用户进行任何交互,并且线程应该正在运行。

    问题是我无法为背景过程提出一个合适的令人信服的例子。

    有人可以帮助我吗?

    修改(仅适用于那些认为此主题与内存管理无关的人)

    这就是Android操作系统通过基于以上类别删除应用程序来为应用程序分配内存(如果内存不足)的方式,我认为它属于内存管理。

2 个答案:

答案 0 :(得分:1)

Android Async任务是后台进程的一个示例。它还与主UI线程同步。 异步任务的doInBackground()方法执行后台处理(无UI交互),但其onPreExecute()onPostExecute()等方法可以与UI进行交互。

示例:您想要下载图片,初始化onPreExcute()中的图片视图,下载处理转到doInBackground()方法并在{{1}的图片视图中显示下载的图片1}}。

答案 1 :(得分:0)

this Android blog post中所述,后台流程:

  1. 不符合前台,可见或服务流程(即没有可见活动,没有正在运行的服务)
  2. 包含先前的前景/可见活动
  3. 此时,该过程被视为后台进程。它与线程是否正在运行无关 - 该进程肯定不会做任何事情。事实上,空进程和后台进程之间的唯一区别是以前的活动活动。在这两种情况下,这些进程主要用于缓存目的,并且可以随时终止。