android 退出程序解決內(nèi)存釋放的問題
更新時間:2012年11月22日 16:22:32 作者:
做Android項目的時候發(fā)現(xiàn)一個問題:當應用程序退出了,點擊"設(shè)置"查看應用程序,界面顯示著可以點擊"強制關(guān)閉 由于這個問題我發(fā)現(xiàn)了一個更加嚴重的問題,那就是,在我應用程序退出之后,系統(tǒng)并沒有釋放掉我應用程序所占內(nèi)存
做Android項目的時候發(fā)現(xiàn)一個問題:當應用程序退出了,點擊"設(shè)置"查看應用程序,界面顯示著可以點擊"強制關(guān)閉".
我認為造成這樣的原因是還有開啟的activity沒有被destroy,然后做調(diào)試,之后發(fā)現(xiàn)開啟的activity應該是全部都被destroy了.但是結(jié)果還是顯示可以點擊"強制關(guān)閉".
由于這個問題我發(fā)現(xiàn)了一個更加嚴重的問題,那就是,在我應用程序退出之后,系統(tǒng)并沒有釋放掉我應用程序所占內(nèi)存.
之后在網(wǎng)上查解決辦法.說是有兩個:
方式一:
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());
有的人說可以結(jié)束掉應用程序,但是不知道什么原因,我在試用了這兩個方法之后都還是不能結(jié)束掉我的應用程序.
我在在點擊"設(shè)置"查看我應用的時候,界面還是顯示可以點擊"強制關(guān)閉".
但是,用這兩個方法是可以釋放掉應用程序所占內(nèi)存的.
嚴重的問題解決了,那個可以點擊"強制關(guān)閉"的問題貌似也不會造成什么影響.所以這個問題我也沒解決了.
最后說下這兩種方式和在哪使用吧.
第一種方式是退出虛擬機,使用這種方式,要注意的是,如果設(shè)備裝有兩個或多個應用中的activity的Category為HOME的
應用,那么每當退出這個應用的時候,設(shè)備都會讓用戶選擇進入到哪個應用.
第二種方式是kill掉當前應用進程.它不會發(fā)生讓用戶選擇進入哪一個應用這種情況.
在哪里使用的話,一般是在最后一個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);
}
我認為造成這樣的原因是還有開啟的activity沒有被destroy,然后做調(diào)試,之后發(fā)現(xiàn)開啟的activity應該是全部都被destroy了.但是結(jié)果還是顯示可以點擊"強制關(guān)閉".
由于這個問題我發(fā)現(xiàn)了一個更加嚴重的問題,那就是,在我應用程序退出之后,系統(tǒng)并沒有釋放掉我應用程序所占內(nèi)存.
之后在網(wǎng)上查解決辦法.說是有兩個:
方式一:
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());
有的人說可以結(jié)束掉應用程序,但是不知道什么原因,我在試用了這兩個方法之后都還是不能結(jié)束掉我的應用程序.
我在在點擊"設(shè)置"查看我應用的時候,界面還是顯示可以點擊"強制關(guān)閉".
但是,用這兩個方法是可以釋放掉應用程序所占內(nèi)存的.
嚴重的問題解決了,那個可以點擊"強制關(guān)閉"的問題貌似也不會造成什么影響.所以這個問題我也沒解決了.
最后說下這兩種方式和在哪使用吧.
第一種方式是退出虛擬機,使用這種方式,要注意的是,如果設(shè)備裝有兩個或多個應用中的activity的Category為HOME的
應用,那么每當退出這個應用的時候,設(shè)備都會讓用戶選擇進入到哪個應用.
第二種方式是kill掉當前應用進程.它不會發(fā)生讓用戶選擇進入哪一個應用這種情況.
在哪里使用的話,一般是在最后一個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);
}
相關(guān)文章
Android開發(fā)教程之獲取系統(tǒng)輸入法高度的正確姿勢
這篇文章主要給大家介紹了關(guān)于Android開發(fā)教程之獲取系統(tǒng)輸入法高度的正確姿勢,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Android具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-10-10Android開發(fā)DataBinding基礎(chǔ)使用
這篇文章主要為大家介紹了Android開發(fā)DataBinding基礎(chǔ)使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06android.enableD8.desugaring?=?false引發(fā)問題解決
這篇文章主要為大家介紹了android.enableD8.desugaring?=?false引發(fā)問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03Android文本視圖TextView實現(xiàn)聊天室效果
這篇文章主要介紹了Android文本視圖TextView實現(xiàn)聊天室效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05Android仿美團網(wǎng)、大眾點評購買框懸浮效果修改版
這篇文章主要為大家詳細介紹了Android仿美團網(wǎng)、大眾點評購買框懸浮效果的修改版,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02實現(xiàn)activity管理器一次退出所有activity
退出所有Activity網(wǎng)上有很多很多種說法,推薦的一種方法是自定義一個Activity管理器,來管理所有已打開的Activity,要退出的時候再通過這個管理器來退出所有Activity,下面是一個簡單的Activity管理器代碼2014-01-01Android使用Intent傳大數(shù)據(jù)簡單實現(xiàn)詳解
這篇文章主要為大家介紹了Android使用Intent傳大數(shù)據(jù)簡單實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03