【Android】一键清理后台实现【附源码】


整个程序很简单

只有一个CleanActivity,实现清理后台及并展示动画效果

一个桌面小部件,点击启动CleanActivity,实现同样效果

一.  CleanActivity的实现

1.  主程序布局

对应布局为文件为 R.layout.activity_clean


    
    


上述布局只有一个ImageView, android:scaleType="centerInside" 这一行让图片自适应控件大小

AndroidManifest.xml 中将CleanActivity的主题设为背景透明,达到程序只显示动画的效果
android:theme="@android:style/Theme.Translucent.NoTitleBar"

2.  动画效果实现:

在res下新建anim目录,新建一个clean_anim.xml来定义动画效果:旋转和放大



     
    
           

在CleanActivity.java的onCreate方法中加载动画
rotateImage=(ImageView)findViewById(R.id.imageView_rotate);        
animation=AnimationUtils.loadAnimation(CleanActivity.this, R.anim.clean_anim);//加载动画 
rotateImage.setAnimation(animation);  

3.  清理后台功能实现

用ActivityManager对象获取系统正在运行的进程
遍历每个进程,在查找每个进程下的相关程序包名(有些进程可能多个程序共享)
用killBackgroundProcesses()方法杀死该进程
这一方法需要在 AndroidManifest.xml中加入权限 

/*
     * 杀死后台进程
     */
    public void killAll(Context context){

        //获取一个ActivityManager 对象
        ActivityManager activityManager = (ActivityManager)
                getSystemService(Context.ACTIVITY_SERVICE);
        //获取系统中所有正在运行的进程
        List appProcessInfos = activityManager
                .getRunningAppProcesses();
        int count=0;//被杀进程计数
        String nameList="";//记录被杀死进程的包名
        long beforeMem = getAvailMemory(CleanActivity.this);//清理前的可用内存
        Log.i(TAG, "清理前可用内存为 : " + beforeMem);
        
        for (RunningAppProcessInfo appProcessInfo:appProcessInfos) {
            nameList="";          
            if( appProcessInfo.processName.contains("com.android.system")
                    ||appProcessInfo.pid==android.os.Process.myPid())//跳过系统 及当前进程
                continue;
            String[] pkNameList=appProcessInfo.pkgList;//进程下的所有包名
            for(int i=0;i

二.  桌面小部件的实现

1.  Widget的布局widget_layout.xml





    


再新建一个widget_properties.xml定义插件属性

   



minWidth和minHeight可以换算成桌面部件所占格子数,这里是1*1
updatePeriodMillis是部件的自动刷新时间,不过本例不需要


 
  
【Android】一键清理后台实现【附源码】_第1张图片

2.  在application元素下注册桌面插件

       
              
                 
              
  
             
        

3.  新建一个CleanWidget类继承AppWidgetProvider来实现小部件功能

public class CleanWidget extends AppWidgetProvider{
    
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds ){
        
       super.onUpdate(context, appWidgetManager, appWidgetIds);
       
       Intent intent=new Intent(context,CleanActivity.class);
       PendingIntent pendingIntent=PendingIntent.getActivity(context, 0, intent, 0);
       RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.widget_layout);
       remoteViews.setOnClickPendingIntent(R.id.imageButton_widget, pendingIntent);//imagebutton控件绑定监听事件      
       
       //更新显示
       if(appWidgetIds.length>0)
           for(int appWidgetId:appWidgetIds)
                appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
          
    }
}

三.  效果图

【Android】一键清理后台实现【附源码】_第2张图片


四、完整代码下载


http://download.csdn.net/detail/haunt_/8377205


你可能感兴趣的:(Android开发)