Android 设备清理内存 RAM

简介: Android 设备清理内存 RAM

实现思路 调用系统的killBackgroundProcesses

具体实现如下:

1.配置权限

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

2.具体实现流程

public class ClearMemoryActivity extends Activity {  
    private static final String TAG = "ClearMemoryActivity";  
  
    /** 
     * Called when the activity is first created. 
     */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
  
        Button clear = (Button) findViewById(R.id.clear);  
        clear.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(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(ClearMemoryActivity.this);  
                Log.d(TAG, "-----------before memory info : " + beforeMem);  
                int count = 0;  
                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 得到该进程下运行的包名  
                                Log.d(TAG, "It will be killed, package name : " + pkgList[j]);  
                                am.killBackgroundProcesses(pkgList[j]);  
                                count++;  
                            }  
                        }  
  
                    }  
                }  
  
                long afterMem = getAvailMemory(ClearMemoryActivity.this);  
                Log.d(TAG, "----------- after memory info : " + afterMem);  
                Toast.makeText(ClearMemoryActivity.this, "clear " + count + " process, "  
                            + (afterMem - beforeMem) + "M", Toast.LENGTH_LONG).show();  
            }  
        });  
 
    }  
  
    //获取可用内存大小  
    private long getAvailMemory(Context context) {  
        // 获取android当前可用内存大小  
        ActivityManager am = (ActivityManager) context.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);  
    }  
}  

注意:getRunningAppProcesses()只能获取到自身app应用的信息,如果要获取其他应用的信息,需要将该apk设置为 "android.uid.system" 或系统签名


目录
相关文章
|
1天前
|
缓存 移动开发 Android开发
构建高效Android应用:从内存优化到电池寿命
【5月更文挑战第18天】在移动开发领域,一个优秀的Android应用不仅要拥有流畅的用户界面和丰富的功能,更要在设备资源有限的前提下保持高效运行。本文将探讨Android应用开发中关键的性能优化策略,包括内存使用优化、CPU使用减少和电池寿命延长等方面。通过分析常见的性能瓶颈和提供实用的解决方案,帮助开发者打造更高效、更受欢迎的Android应用。
|
2天前
|
存储 定位技术 开发工具
Android 开发前的设计,Android之内存泄漏调试学习与总结
Android 开发前的设计,Android之内存泄漏调试学习与总结
|
3天前
|
Java Android开发 Linux
android内存优化面试题,挑战大厂重燃激情
android内存优化面试题,挑战大厂重燃激情
|
3天前
|
Android开发
Android获取蓝牙设备列表的方法
Android获取蓝牙设备列表的方法
14 5
|
3天前
|
Android开发
Android监听USB设备插拔
Android监听USB设备插拔
17 7
|
3天前
|
Android开发
Android 获取 USB设备列表
Android 获取 USB设备列表
14 4
|
3天前
|
Android开发
获取Android设备屏幕大小
获取Android设备屏幕大小
13 3
|
3天前
|
Shell Android开发
ADB更改Android设备屏幕显示方向
ADB更改Android设备屏幕显示方向
13 5
|
3天前
|
存储 监控 Java
Android Service之设备存储空间监控 DeviceStorageMonitorService
Android Service之设备存储空间监控 DeviceStorageMonitorService
18 2
|
4天前
|
安全 物联网 Android开发
构建未来:Android与IoT设备的无缝集成
【5月更文挑战第10天】 在数字化时代的浪潮中,智能设备与互联网的结合日益紧密。本文深入探讨了Android系统如何通过其开放性和灵活性成为连接物联网(IoT)设备的关键枢纽。我们将分析Android平台与IoT设备集成的技术途径,探索它们如何共同塑造智能家居、可穿戴技术以及工业自动化等领域的未来。文中不仅阐述了当前的发展状况,还展望了未来的发展趋势,特别是安全性和隐私保护方面的挑战及对策。
14 1