iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 一键清理、内存清理功能实现
  • 649
分享到

Android 一键清理、内存清理功能实现

一键清理Android 2022-06-06 04:06:14 649人浏览 八月长安
摘要

360桌面、金山清理大师等都提供了一键清理、一键加速等功能,其实就是杀一些后台进程来达到释放内存的目的。 基本思路就是列出所有运行的进程,查看其重要值(RunningAppP

360桌面、金山清理大师等都提供了一键清理、一键加速等功能,其实就是杀一些后台进程来达到释放内存的目的。

基本思路就是列出所有运行的进程,查看其重要值(RunningAppProcessInfo.importance,值越大说明进程重要程度越低),可以设定一个阈值,如果该进程的重要值大于该阈值,就可以杀掉该进程。

进程的重要值有以下几个等级:


  
      public static final int IMPORTANCE_PERSISTENT = 50;  
        
      public static final int IMPORTANCE_FOREGROUND = 100;  
        
      public static final int IMPORTANCE_VISIBLE = 200;  
        
      public static final int IMPORTANCE_PERCEPTIBLE = 130;  
        
      public static final int IMPORTANCE_CANT_SAVE_STATE = 170;  
        
      public static final int IMPORTANCE_SERVICE = 300;  
        
      public static final int IMPORTANCE_BACKGROUND = 400;  
        
      public static final int IMPORTANCE_EMPTY = 500;  

需要权限:


<uses-permission Android:name="android.permission.KILL_BACKGROUND_PROCESSES"/> 

具体操作代码如下:


package com.example.demo; 
import java.util.List; 
import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.ActivityManager.MemoryInfo; 
import android.app.ActivityManager.RunningAppProcessInfo; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.content.pm.PackageManager.NameNotFoundException; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Toast; 
public class CleanProcessActivity extends Activity { 
  private static final String TAG = "Clean"; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_clean_process); 
  } 
  public void clean(View v){ 
    //To change body of implemented methods use File | Settings | File Templates.  
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);  
    List<RunningAppProcessInfo> infoList = am.getRunningAppProcesses();  
    List<ActivityManager.RunningServiceInfo> serviceInfos = am.getRunningServices(100);  
    long beforeMem = getAvailMemory(this);  
    Log.d(TAG, "-----------before memory info : " + beforeMem);  
    int count = 0;  
    PackageManager pm = getPackageManager(); 
    if (infoList != null) {  
      for (int i = 0; i < infoList.size(); ++i) {  
        RunningAppProcessInfo appProcessInfo = infoList.get(i);  
        Log.d(TAG, "process name : " + appProcessInfo.processName);  
        //importance 该进程的重要程度 分为几个级别,数值越低就越重要。  
        Log.d(TAG, "importance : " + appProcessInfo.importance);  
        // 一般数值大于RunningAppProcessInfo.IMPORTANCE_SERVICE的进程都长时间没用或者空进程了  
        // 一般数值大于RunningAppProcessInfo.IMPORTANCE_VISIBLE的进程都是非可见进程,也就是在后台运行着  
        if (appProcessInfo.importance > RunningAppProcessInfo.IMPORTANCE_VISIBLE) {  
          String[] pkgList = appProcessInfo.pkgList;  
          for (int j = 0; j < pkgList.length; ++j) {//pkgList 得到该进程下运行的包名  
            String appName = null; 
            try { 
              appName = (String) pm.getApplicationLabel(pm.getApplicationInfo(pkgList[j], 0));  
            } catch (NameNotFoundException e) { 
              // TODO Auto-generated catch block 
              e.printStackTrace(); 
            } 
            Log.d(TAG, "It will be killed, package name : " + pkgList[j]+" -- "+appName );  
            am.killBackgroundProcesses(pkgList[j]);  
            count++;  
          }  
        }  
      }  
    }  
    long afterMem = getAvailMemory(this);  
    Log.d(TAG, "----------- after memory info : " + afterMem);  
    Toast.makeText(this, "clear " + count + " process, "  
          + (afterMem - beforeMem) + "M", Toast.LENGTH_LONG).show();  
  } 
  private long getAvailMemory(CleanProcessActivity cleanProcessActivity) { 
    // 获取android当前可用内存大小  
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);  
    MemoryInfo mi = new MemoryInfo();  
    am.getMemoryInfo(mi);  
    //mi.availMem; 当前系统的可用内存  
    //return FORMatter.formatFileSize(context, mi.availMem);// 将获取的内存大小规格化  
    Log.d(TAG, "可用内存---->>>" + mi.availMem / (1024 * 1024));  
    return mi.availMem / (1024 * 1024);  
  }  
} 

注意:

我这里选择阈值是IMPORTANCE_VISIBLE级别的,也就是非可见的后台进程和服务会被杀掉(一些系统进程肯定除外)。
清理的效果跟金山清理大师和360桌面的一键清理效果差不多。

如果不想杀的太凶,可以选择IMPORTANCE_SERVICE级别,杀掉那些长时间没用或者空进程了,这个级别的清理力度不够大,达不到金山清理大师的效果。

您可能感兴趣的文章:Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解Android实现仿360桌面悬浮清理内存


--结束END--

本文标题: Android 一键清理、内存清理功能实现

本文链接: https://www.lsjlt.com/news/22488.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android开发中怎么实现一个 一键清理、内存清理功能
    Android开发中怎么实现一个 一键清理、内存清理功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。360桌面、金山清理大师等都提供了一键清理、一键加速等功能,其实就是杀一些...
    99+
    2023-05-31
    android roi
  • 清理Linux内存
    Linux运行一段时间之后,内存会越来越多,导致内存不够用,需要释放一下内存才行echo "1" > /proc/sys/vm/drop_caches说明,释放前最好sync一下,防止丢数据。因为LINUX的内核机...
    99+
    2023-01-30
    内存 Linux
  • 阿里云服务器清理内存怎么清理
    阿里云服务器可以通过内存清理来释放更多的内存,以便更好地处理数据和服务的负载。具体清理过程如下: 进入阿里云控制面板(https://cloudmanager.aliyun.com/),点击“更多”。 在“更多”页面的右上角,找到“内存...
    99+
    2023-10-26
    阿里 内存 服务器
  • windows10系统怎么清理内存windows10系统缓存清理实例教程
    如果我们windows10电脑运行内存过满,那样程序运行便会越来越卡屏,那要怎么清理内存呢,首先是开启windows10系统的C盘,点击磁盘清理选择项,等候系统扫描仪垃圾文件,随后点击挑选要删除的垃圾文件,最终点击明确就好啦,等候垃圾文件删...
    99+
    2023-07-13
  • 阿里云服务器清理内存怎么清理啊
    阿里云服务器清理内存通常指的是删除服务器上不再需要的数据,以提高服务器的性能和运行效率。具体操作可以参考下面的步骤: 首先,打开控制面板,找到“性能与维护”或“计算机管理”选项。 然后,打开“磁盘管理”选项。在这里,您可以清理磁盘上已缓...
    99+
    2023-10-27
    阿里 内存 服务器
  • win8内存条如何清理
    小编给大家分享一下win8内存条如何清理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是内存条金手指内存条金手是内存条上与内存插槽之间的连接部件,由众多金黄色...
    99+
    2023-06-28
  • 如何清理电脑内存
    清理电脑内存的方法:1.打开“此电脑”;2.右键点击系统盘,选择“属性”选项;3.点击“磁盘清理”按钮清理电脑内存;具体步骤如下:首先,在电脑桌面中双击打开“此电脑”;进入到此电脑界面后,在界面中右键点击系统盘,选择“属性”选项;最后,进入...
    99+
    2024-04-02
  • 阿里云服务器清理内存怎么清理不了
    如果您无法清理内存,以下是一些可能有用的建议: 删除不需要的文件,如图片、文档等。请确保您删除这些文件的位置并对其进行备份以防丢失。 关闭云服务的自动同步功能。这可能会使您无法立即访问大量数据,但是您可以通过手动控制它来减少内存占用。 ...
    99+
    2023-10-27
    阿里 内存 服务器
  • redis内存满了怎么清理
    当Redis内存满了时,可以通过以下几种方法来清理内存: 使用Redis的eviction策略:Redis提供了几种evicti...
    99+
    2024-04-09
    redis
  • macbookair如何清理系统内存
    这篇文章主要介绍了macbookair如何清理系统内存的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇macbookair如何清理系统内存文章都会有所收获,下面我们一起来看看吧。...
    99+
    2022-12-27
    macbookair
  • Android实现一键锁屏功能
    android实现一键锁屏 创建AdminReceiver import android.app.admin.DeviceAdminReceiver; public class Ad...
    99+
    2022-11-13
    android一键锁屏 android锁屏
  • win7内存不足如何清理
    要清理Win7内存不足,可以按照以下步骤进行操作:1. 关闭不必要的程序:打开任务管理器(Ctrl + Shift + Esc),在...
    99+
    2023-08-31
    win7
  • win11运行内存如何清理
    本篇内容介绍了“win11运行内存如何清理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win11清理运行内存的方法:第一步,点击任务栏的“...
    99+
    2023-06-30
  • linux 内存清理释放命令
    linux 内存清理释放命令 1. 清理前内存使用情况 free -m 2. 开始清理 echo 1 > /proc/sys/vm/drop_caches 清理后内存使用情况 free -m 完成! 查看内存条数命令: dmide...
    99+
    2023-08-20
    linux 运维 服务器
  • 云服务器清空数据盘怎么清理内存
    清空云服务器数据盘并不会直接清理内存,因为内存和数据盘是两个不同的存储设备。清空数据盘只是删除了数据盘上的文件和文件夹,而内存中的数据并没有受到影响。 如果你想清理内存,可以尝试以下方法: 重启服务器:重启服务器可以清空内存中的数据,这...
    99+
    2023-10-27
    清空 内存 服务器
  • 怎么清理云服务器内存
    清理云服务器内存的方法可以分为以下几种:1. 重启服务器:重启服务器可以清除内存中的临时数据和缓存,释放内存空间。可以使用命令`su...
    99+
    2023-08-09
    云服务器
  • 电脑内存不足如何清理
    本篇内容介绍了“电脑内存不足如何清理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!清理方法我们重启电脑,然后在开机画面出现的时候,按下【DE...
    99+
    2023-07-01
  • 阿里云服务器清理内存
    阿里云服务器可以清理内存,但需要确保以下几点: 使用阿里云官网提供的清理工具进行清理:在清理工具的使用说明中有清理内存的详细说明,可以按照清理内存指南进行操作。 确定内存类型:不同类型的内存占用的内存大小可能不同,因此要确保在清理之前确...
    99+
    2023-10-26
    阿里 内存 服务器
  • java内存占用高如何清理
    在Java中,内存占用高可能是因为程序中存在内存泄漏或者使用了大量的不必要的对象。以下是一些清理内存的方法: 使用垃圾回收器:J...
    99+
    2024-03-02
    java
  • 云服务器怎么清理内存
    云服务器清理内存的方法:在Linux的首页使用快捷键:“Ctrl+Alt+T”,打开终端。输入命令“free -m”,查询内存使用情况。再输入清空缓存命令:“sysctl -w vm.drop_caches=3”。最后再输入“free -m...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作