萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> Android程序退出後內存釋放的問題

Android程序退出後內存釋放的問題

 做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 © 萬盛學電腦網 all rights reserved