Android清理设备内存具体完整演示样例(二)
生活随笔
收集整理的這篇文章主要介紹了
Android清理设备内存具体完整演示样例(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
版權聲明: https://blog.csdn.net/lfdfhl/article/details/27672913
main.xml例如以下:
MainActivity例如以下:
package cc.c;import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; 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.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; /*** Demo描寫敘述:* 清理手機內存* * 參考資料:* 1 http://blog.30c.org/1816.html* 2 http://www.cnblogs.com/helloandroid/archive/2011/10/14/2212334.html* Thank you very much* * 注意權限:* <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />* */ public class MainActivity extends Activity {private TextView mTotalMemoryTextView;private TextView mAvailMemoryTextView;private Button mCleanButton;private TextView mCleanInfoTextView;private ActivityManager mActivityManager;private StringBuffer mCleanInfoStringBuffer;private long availMemory;private long totalMemory;private List<RunningAppProcessInfo> mRunningAppProcessInfoList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}private void init() {mCleanInfoStringBuffer = new StringBuffer();mActivityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);mTotalMemoryTextView = (TextView) findViewById(R.id.totalMemoryTextView);mAvailMemoryTextView = (TextView) findViewById(R.id.availMemoryTextView);mCleanInfoTextView = (TextView) findViewById(R.id.cleanInfoTextView);mCleanButton = (Button) findViewById(R.id.cleanButton);totalMemory = getTotalMemory();availMemory = getAvailMemory();mTotalMemoryTextView.setText(totalMemory + "MB");mAvailMemoryTextView.setText(availMemory + "MB");mCleanButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {RunningAppProcessInfo runningAppProcessInfo=null;mRunningAppProcessInfoList= mActivityManager.getRunningAppProcesses();//List<ActivityManager.RunningServiceInfo> serviceInfos = mActivityManager.getRunningServices(100);if (mRunningAppProcessInfoList != null) {for (int i = 0; i < mRunningAppProcessInfoList.size(); ++i) {runningAppProcessInfo= mRunningAppProcessInfoList.get(i);// 一般數值大于RunningAppProcessInfo.IMPORTANCE_SERVICE// 的進程即為長時間未使用進程或者空進程// 一般數值大于RunningAppProcessInfo.IMPORTANCE_VISIBLE// 的進程都是非可見進程,即在后臺執行if (runningAppProcessInfo.importance > RunningAppProcessInfo.IMPORTANCE_VISIBLE) {String[] pkgList = runningAppProcessInfo.pkgList;for (int j = 0; j < pkgList.length; ++j) {mActivityManager.killBackgroundProcesses(pkgList[j]);mCleanInfoStringBuffer.append(pkgList[j] + " is killed...\n");mCleanInfoTextView.setText(mCleanInfoStringBuffer.toString());}}}}//再次獲得剩余內存以計算清理值mCleanInfoStringBuffer.append("共清理:"+(getAvailMemory() - availMemory) + "MB");mCleanInfoTextView.setText(mCleanInfoStringBuffer.toString());mAvailMemoryTextView.setText(getAvailMemory() + "MB");}});}private long getTotalMemory() {//系統的內存信息文件String filePath = "/proc/meminfo";String lineString;String[] stringArray;long totalMemory = 0;try {FileReader fileReader = new FileReader(filePath);BufferedReader bufferedReader = new BufferedReader(fileReader,1024 * 8);//讀取meminfo第一行,獲取系統總內存大小lineString = bufferedReader.readLine();//依照空格拆分stringArray = lineString.split("\\s+");//獲得系統總內存,單位KBtotalMemory = Integer.valueOf(stringArray[1]).intValue();bufferedReader.close();System.out.println("------> lineString=" + lineString+ ",stringArray[0]=" + stringArray[0] + ",stringArray[1]="+ stringArray[1] + ",stringArray[2]=" + stringArray[2]);} catch (IOException e) {}return totalMemory / 1024;}private long getAvailMemory() {MemoryInfo memoryInfo = new MemoryInfo();mActivityManager.getMemoryInfo(memoryInfo);return memoryInfo.availMem / (1024 * 1024);}}
main.xml例如以下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin" ><TextViewandroid:id="@+id/totalTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="系統內存:"android:textSize="25sp"android:textColor="#1cf109" /><TextViewandroid:id="@+id/totalMemoryTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/totalTextView"android:textSize="25sp"android:textColor="#1cf109" /><TextViewandroid:id="@+id/availTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/totalTextView"android:text="可用內存:"android:textSize="25sp"android:textColor="#5c0169" /><TextViewandroid:id="@+id/availMemoryTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/totalTextView"android:layout_toRightOf="@id/availTextView"android:textSize="25sp"android:textColor="#5c0169" /><Buttonandroid:id="@+id/cleanButton"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/availMemoryTextView"android:textSize="25sp"android:text="清理內存" /><ScrollViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/cleanButton" ><TextViewandroid:id="@+id/cleanInfoTextView"android:layout_width="fill_parent"android:layout_height="wrap_content" /></ScrollView></RelativeLayout>
PS:更好的方式請參見Android清理設備內存具體完整演示樣例(一)
轉載于:https://www.cnblogs.com/mqxnongmin/p/10745174.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Android清理设备内存具体完整演示样例(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到下雪了是什么意思周公解梦
- 下一篇: Android仿QQ复制昵称效果2