您当前的位置: 首页 >  android

xiangzhihong8

暂无认证

  • 3浏览

    0关注

    1324博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

android进程 清理及activity栈管理

xiangzhihong8 发布时间:2014-06-16 14:08:39 ,浏览量:3

MainActivity如下:
[java] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package come.on;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10. import android.widget.EditText;  
  11. /** 
  12.  * Demo描述: 
  13.  * 内存清理及内存工具类 
  14.  * 具体代码参见工具类MemoryUtils 
  15.  *  
  16.  */  
  17. public class MainActivity extends Activity {  
  18.     private Button mButton;  
  19.     private Context mContext;  
  20.     private EditText mEditText;  
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.main);  
  25.         init();  
  26.     }  
  27.       
  28.     private void init(){  
  29.         mContext=this;  
  30.         Intent intent=new Intent("come.on.service");  
  31.         //该Service无用,可去掉  
  32.         startService(intent);  
  33.           
  34.         mEditText=(EditText) findViewById(R.id.editText);  
  35.         mButton=(Button) findViewById(R.id.button);  
  36.         mButton.setOnClickListener(new OnClickListener() {  
  37.             @Override  
  38.             public void onClick(View v) {  
  39.                 MemoryUtils.cleanMemory(mContext,mEditText);  
  40.             }  
  41.         });  
  42.     }  
  43.      
  44. }  
MemoryUtils如下:
[java] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package come.on;  
  2.   
  3. import java.util.List;  
  4. import java.io.FileReader;  
  5. import android.os.Process;  
  6. import java.io.IOException;  
  7. import java.io.BufferedReader;  
  8. import android.widget.EditText;  
  9. import android.content.Context;  
  10. import java.io.InputStreamReader;  
  11. import android.app.ActivityManager;  
  12. import android.content.ComponentName;  
  13. import android.app.ActivityManager.MemoryInfo;  
  14. import android.app.ActivityManager.RunningTaskInfo;  
  15. import android.app.ActivityManager.RunningAppProcessInfo;  
  16.   
  17. /** 
  18.  * 文档描述: 
  19.  * 内存工具类 
  20.  *  
  21.  * 包括内容: 
  22.  * 1 内存清理即杀掉进程的几种方式 
  23.  * 2 获取内存总大小及其可用大小 
  24.  * 3 判断栈顶Activity名及其所属进程名 
  25.  *  
  26.  * 注意权限: 
  27.  *    
  28.  *  
  29.  *  
  30.  * 文档日期: 
  31.  * 2014年5月30日10:01:55 
  32.  * 
  33.  */  
  34. public class MemoryUtils {  
  35.       
  36.     //----------> 以下为杀掉进程的几种方式  
  37.       
  38.     public static void cleanMemory(Context context,EditText editText) {  
  39.         long beforeCleanMemory=getAvailMemory(context);  
  40.         System.out.println("---> 清理前可用内存大小:"+beforeCleanMemory+"M");  
  41.         ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  
  42.         RunningAppProcessInfo runningAppProcessInfo = null;  
  43.         List runningAppProcessInfoList = activityManager.getRunningAppProcesses();  
  44.         for (int i = 0; i  以上为杀掉进程的几种方式  
  45.       
  46.   
  47.       
  48.       
  49.       
  50.     //获取当前进程名  
  51.     public static String getCurrentProcessName(Context context) {  
  52.         int pid = android.os.Process.myPid();  
  53.         ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  
  54.         for (RunningAppProcessInfo runningAppProcessInfo : activityManager.getRunningAppProcesses()) {  
  55.             if (runningAppProcessInfo.pid == pid) {  
  56.                 String processName=runningAppProcessInfo.processName;  
  57.                 return processName;  
  58.             }  
  59.         }  
  60.         return null;  
  61.     }  
  62.       
  63.       
  64.     //获取栈顶Activity名称  
  65.     public static String getTopActivityName(Context context) {  
  66.         String topActivityName = null;  
  67.         ActivityManager activityManager = (ActivityManager) (context.getSystemService(android.content.Context.ACTIVITY_SERVICE));  
  68.         List runningTaskInfos = activityManager.getRunningTasks(1);  
  69.         if (runningTaskInfos != null) {  
  70.             ComponentName f = runningTaskInfos.get(0).topActivity;  
  71.             String topActivityClassName = f.getClassName();  
  72.             String temp[] = topActivityClassName.split("\\.");  
  73.             topActivityName = temp[temp.length - 1];  
  74.         }  
  75.         return topActivityName;  
  76.     }  
  77.       
  78.       
  79.       
  80.     //获取栈顶Activity所属进程的名称  
  81.     public static String getTopActivityProcessName(Context context) {  
  82.         String processName = null;  
  83.         ActivityManager activityManager = (ActivityManager) (context.getSystemService(android.content.Context.ACTIVITY_SERVICE));  
  84.         List runningTaskInfos = activityManager.getRunningTasks(1);  
  85.         if (runningTaskInfos != null) {  
  86.             ComponentName componentName = runningTaskInfos.get(0).topActivity;  
  87.             String topActivityClassName = componentName.getClassName();  
  88.             int index = topActivityClassName.lastIndexOf(".");  
  89.             processName = topActivityClassName.substring(0, index);  
  90.         }  
  91.         return processName;  
  92.     }  
  93.       
  94.       
  95.       
  96.     //获取内存总大小  
  97.     public static long getTotalMemory() {  
  98.         // 系统的内存信息文件  
  99.         String filePath = "/proc/meminfo";  
  100.         String lineString;  
  101.         String[] stringArray;  
  102.         long totalMemory = 0;  
  103.         try {  
  104.             FileReader fileReader = new FileReader(filePath);  
  105.             BufferedReader bufferedReader = new BufferedReader(fileReader,1024 * 8);  
  106.             // 读取meminfo第一行,获取系统总内存大小  
  107.             lineString = bufferedReader.readLine();  
  108.             // 按照空格拆分  
  109.             stringArray = lineString.split("\\s+");  
  110.             // 获得系统总内存,单位KB  
  111.             totalMemory = Integer.valueOf(stringArray[1]).intValue();  
  112.             bufferedReader.close();  
  113.         } catch (IOException e) {  
  114.         }  
  115.         return totalMemory / 1024;  
  116.     }  
  117.       
  118.       
  119.       
  120.     //获取可用内存大小  
  121.     public static long getAvailMemory(Context context) {  
  122.         ActivityManager activityManager=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);  
  123.         MemoryInfo memoryInfo = new MemoryInfo();  
  124.         activityManager.getMemoryInfo(memoryInfo);  
  125.         return memoryInfo.availMem / (1024 * 1024);  
  126.     }  
  127.       
  128.   
  129. }  
ServiceSubclass如下:
[java] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package come.on;  
  2.   
  3. import android.app.Service;  
  4. import android.content.Intent;  
  5. import android.os.IBinder;  
  6.   
  7. public class ServiceSubclass extends Service {  
  8.   
  9.     @Override  
  10.     public IBinder onBind(Intent intent) {  
  11.         return null;  
  12.     }  
  13.       
  14.     @Override  
  15.     public void onCreate() {  
  16.         super.onCreate();  
  17.         System.out.println("---> Service的 onCreate()");  
  18.     }  
  19.       
  20.     @Override  
  21.     public void onStart(Intent intent, int startId) {  
  22.         super.onStart(intent, startId);  
  23.         System.out.println("---> Service的 onStart()");  
  24.     }  
  25.   
  26. }  
main.xml如下:
[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1.   
  2.   
  3.   
  4.       
  5.       
  6.       
  7.       
  8.       
  9.       
  10.   
  11.   
AndroidManifest.xml如下:
[html] view plain copy 在CODE上查看代码片 派生到我的代码片
  1.   
  2.   
  3.   
  4.       
  5.       
  6.       
  7.       
  8.       
  9.       
  10.       
  11.       
  12.       
  13.       
  14.       
  15.       
  16.       
  17.       
  18.       
  19.         
  20.       
  21.       
  22.       
  23.   
  24.       
  25.           
  26.               
  27.                   
  28.   
  29.                   
  30.               
  31.           
  32.           
  33.               
  34.                   
  35.               
  36.           
  37.       
  38.   
  39.  
关注
打赏
1482932726
查看更多评论
立即登录/注册

微信扫码登录

0.0434s