如何在被杀死时从内存中清除进程

时间:2011-05-19 02:05:40

标签: android memory-management

当它被杀死时如何从内存中清除进程,我不在乎进程是空的还是什么都不做。只是想从记忆中清除它。

OR

读取1M文件一次后,读取两次时将从内存/缓存中读取。 问题是一旦读完后可以从内存或缓存中清楚吗?

感谢

2 个答案:

答案 0 :(得分:1)

最好的答案是:你没有“清除它”:你让android处理它们。如果(当)存在需要时,任何进程都将被终止。关于缓存,垃圾收集器将负责处理。再一次,不需要在你身边做任何事情(除非,确保你没有在某处留下实时参考资料)。

我引用了android博客中Dianne Hackborn's post的部分内容:

  

申请何时“停止”?

     

一个常见的误解   Android多任务是不同的   进程和应用程序之间。   在Android中,这些并不紧密   耦合实体:应用程序可能   似乎没有一个用户   当前正在运行的实际流程   应用;多个应用程序可能共享   流程或一个应用程序可能会   使用多个进程取决于   它的需要;一个过程   申请可以保留   Android即使该应用程序是   没有积极做某事。

     

你可以看到一个事实   应用程序的“运行”过程确实如此   并不意味着应用程序正在运行或   做任何事情。它可能就在那里   因为Android需要它   点,并已决定它会   最好保持它,以防万一   需要它再次。同样,你可以   离开申请一点点   从你离开的地方回到它   关闭,并在那段时间Android可能   需要摆脱这个过程   其他事情。

     

Android处理方式的关键   以这种方式应用就是这样   流程不会干净地关闭。   当用户离开应用程序时   它的过程保持在   背景,允许它继续   工作(例如下载网站   页面)如果需要,立即来   如果用户返回,则返回前台   它。如果设备永远不会耗尽   记忆,然后Android会保留所有   这些过程,真正离开   所有应用程序“运行”所有的   时间。

     

当然,数量有限   记忆,并容纳这一点   Android必须决定何时摆脱   不需要的流程。这个   导致Android的流程生命周期,   它用来决定如何的规则   重要的是每个过程都是如此   下一个应该被删除。这些   规则是基于两者的重要性   进程是针对用户的当前进程   经验,以及它有多长   自从最后需要这个过程以来   由用户。

答案 1 :(得分:0)

如果您正在寻找杀戮过程,这可能有所帮助,

 int pid = android.os.Process.myPid();
     android.os.Process.killProcess(pid);
  Runtime r = Runtime.getRuntime();

    r.gc();
    System.gc();