Android:如何停止/清除我的 Android 小部件应用程序的缓存后台进程?

Posted

技术标签:

【中文标题】Android:如何停止/清除我的 Android 小部件应用程序的缓存后台进程?【英文标题】:Android: How to stop/clear cached background processes of my Android widget application? 【发布时间】:2013-03-16 10:23:09 【问题描述】:

有没有办法停止/清除我的 android Widget 的缓存后台进程?

我的小部件使用较少的 RAM 内存(约 1 mb),但在后台缓存进程中使用大量内存(约 100/200 mb)。

有没有办法停止后台缓存进程或者清除它?

【问题讨论】:

只是好奇什么是缓存的后台进程? 当您继续设置/应用程序/运行/缓存后台进程时,您可以看到缓存的后台进程 【参考方案1】:

设置 > 开发者选项 > 应用程序 > 后台进程:否。

PS。不要解决任何不完整的解决方案!

【讨论】:

【参考方案2】:

我认为 CommonsWare 在On Android, what's the difference between running processes and cached background processes? 上的回答可能对您有所帮助。简而言之,似乎没有理由清除它。此外,如果您单击该过程,您将看到一条消息 “这是一个旧的申请流程,为了更快的速度,以防再次需要它。通常没有理由停止它。”希望对您有所帮助。

【讨论】:

所以如果我需要更多内存来玩高清游戏,它会自动清除吗?|【参考方案3】:

我认为清除 Android 上的内存通常是有原因的。当你上线时,Android(实际上是谷歌)会预加载一堆应用程序作为“缓存”。当您离线时,它会清除这些并加载更多。还有像 Google+ 这样的东西,它就坐在那里,占用你可怜的手机 50Mb 的 RAM。因此,如果您需要删除所有未使用的元数据收集废话,以便您的应用有一些空间,您可以执行以下操作:

public void clearMem() 
    ActivityManager amgr = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> list = amgr.getRunningAppProcesses();
    if (list != null)
        for (int i = 0; i < list.size(); i++) 
            ActivityManager.RunningAppProcessInfo apinfo = list.get(i);

            String[] pkgList = apinfo.pkgList;
            if ((! apinfo.processName.startsWith("com.sec")) && ((apinfo.importance > 150) || (apinfo.processName.contains("google")))) 
                for (int j = 0; j < pkgList.length; j++) 
                    amgr.killBackgroundProcesses(pkgList[j]);
                
            
        
    

【讨论】:

以上是关于Android:如何停止/清除我的 Android 小部件应用程序的缓存后台进程?的主要内容,如果未能解决你的问题,请参考以下文章

为啥手机开机弹出“com.android.iphone已停止运行”?怎么解决?

android 调试器不会在断点处停止

如何清除android应用程序的通知?

如何清除状态栏上的推送通知警报 - android

如何在 Android 中清除 ImageView?

如何以编程方式强制停止我的 android 应用程序?