歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 應用退出時釋放應用所占內存

Android 應用退出時釋放應用所占內存

日期:2017/3/1 10:14:57   编辑:Linux編程

做Android項目的時候發現一個問題:當應用程序退出了,點擊"設置"查看應用程序,界面顯示著可以點擊"強制關閉".

我認為造成這樣的原因是還有開啟的activity沒有被destroy,然後做調試,之後發現開啟的activity應該是全部都被

destroy了.但是結果還是顯示可以點擊"強制關閉".

由於這個問題我發現了一個更加嚴重的問題,那就是,在我應用程序退出之後,系統並沒有釋放掉我應用程序所占內存.

之後在網上查解決辦法.說是有兩個:

方式一:

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

this.startActivity(intent);

System.exit(0);


方式二:

android.os.Process.killProcess(android.os.Process.myPid());


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

有的人說可以結束掉應用程序,但是不知道什麼原因,我在試用了這兩個方法之後都還是不能結束掉我的應用程序.

我在在點擊"設置"查看我應用的時候,界面還是顯示可以點擊"強制關閉".

但是,用這兩個方法是可以釋放掉應用程序所占內存的.

嚴重的問題解決了,那個可以點擊"強制關閉"的問題貌似也不會造成什麼影響.所以這個問題我也沒解決了.

最後說下這兩種方式和在哪使用吧.

第一種方式是退出虛擬機,使用這種方式,要注意的是,如果設備裝有兩個或多個應用中的activity的Category為HOME的

應用,那麼每當退出這個應用的時候,設備都會讓用戶選擇進入到哪個應用.

第二種方式是kill掉當前應用進程.它不會發生讓用戶選擇進入哪一個應用這種情況.

在哪裡使用的話,一般是在最後一個activity的onDestroy()方法中使用這兩種方法

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

// release application's RAM

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

this.startActivity(intent);

System.exit(0);

}

Copyright © Linux教程網 All Rights Reserved