2012-05-14 139 views
1

當我創建一個意圖:摧毀一個意圖?

Intent in = new Intent(this, myclass.class); 
this.startActivity(in); 

我創建了一個新的意圖,但最後的目的是不破壞
它仍然在內存
我怎麼能殺了這最後的毀滅?

所以我想在兩個不同的類創建兩個意圖: 第一類我寫這篇文章:

Intent in1 = new Intent(this, myclass2.class); 
this.startActivity(in); 

,並在第二類我寫這篇文章:

Intent in2 = new Intent(this, myclass1.class); 
this.startActivity(in2); 

但是當我點擊in1將創建和in2將銷燬,當我點擊in2 in2將創建和in1將銷燬。

一個想清潔我的手機內存。

+0

只是做基本n2 = null; – Akram

回答

6

您可以通過重寫這樣的返回鍵功能,防止去到以前Activity用戶:

public void onBackPressed() { 
     //doing nothing on pressing Back key 
     return; 
    } 

雖然這種做法是不encouraged.And大家都知道,在Activity將自動殺死當某些方面出現像內存要求時。你不能按照你的意願摧毀一個Activity

雖然具體的情況下,像一個歡迎屏幕也許,你可以做以下兩兩件事之一:

1)撥打您當前Activityfinish()方法,你移動到 新Activity(通常在完成時使用Thread)。

2)請使用您manifest如下:

<activity android:name=".WelcomeScreen" android:noHistory="true" ... /> 

這將告訴設備無法保持這種ActivityActivity堆棧。

+0

yeaaaah謝謝你的男人:D nohistory =「true」在xml文件中,並且新的意圖在我的class:D so cool again再次 – shelltrayWnd

+0

如果有幫助的話,請立即註冊。:-) –

1

我不確定要了解您的問題... 您想開始一項新活動並銷燬上一個活動嗎? 如果這是你需要什麼,你可以使用:「嘿!我要開始這項活動,殺死所有的其他的」

startActivity(new Intent(this, myActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 

的「CLEAR_TOP」標誌告訴

+0

是的,我想破壞以前的意圖,所以我通過你的代碼,但是當我點擊模擬器的後退按鈕(KeyEvent。KEYCODE_BACK)...我沒有消息錯誤和以前的信息仍然在意圖:( 我可以清理佈局嗎?或銷燬意圖 – shelltrayWnd

2

在Android決定將其刪除之前,活動仍保留在內存中。不要擔心。當需要更多內存時它會被破壞。這是有效的「未使用」的內存,直到您的頂級活動使用它。

+0

是的,但是當我點擊後面的模擬器boutton我得到最後的信息我不想這樣:/ – shelltrayWnd

+0

聽起來好像你從上次使用過程中傳入了同一個intent對象,如果你退出一個Activity然後用一個新的intent重新啓動它,它應該作爲一個新的Activity。用新的意圖調用startActivity(),它應該像重新啓動一樣。 – DeeV

0

由於Android運行時環境使用垃圾回收(就像「傳統」Java一樣),因此在大多數情況下,您無需擔心手動銷燬對象。如果系統需要額外的空間用於新對象,未使用的對象佔用的內存將被回收。