2012-05-08 76 views
-1

在我的Android項目中,我有2個活動。一個是MyProject,另一個是MyProjectOutputAndroid - 即使按下後退按鈕,程序仍駐留在內存中

MyProject,有一個按鈕(btnProcess),它會做一些處理,並使用下面的代碼將啓動第二個活動:

btnProcess.setEnabled(false); 
    // does some network access in an AsyncTask and fetches some stuff, and store some data in the variable 'my_extra_content' 
    //... 

    Intent i = new Intent(this, MyProjectOutput.class); 
    i.putExtra("extracontent", my_extra_content); 
    startActivityForResult(i,1); 

在第二個活動,它有一個按鈕,返回到主要活動(一個軟件後退按鈕)。而且代碼:

final Button btnBack = (Button) findViewById(R.id.btnBack); 
    btnBack.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //when Back button is pressed, it is cancelled 
      setResult(Activity.RESULT_CANCELED); 
      finish(); 
     } 
    }); 

,並在主要活動中,我使用這個重新啓用按鈕:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    btnProcess.setEnabled(true); 

} 

我的程序運行在模擬器(AVD)的罰款。我已經把這個給了我的一個擁有Android設備的朋友。在測試之後,他說工作正常,但是當主活動按下後退按鈕(硬件按鈕)時,程序沒有終止。仍在記憶中!但是當我在AVD中測試時,當我按下主要活動中的硬件後退按鈕時,它會顯示手機的主屏幕!

我正在使用諾基亞設備(確切地說是5230)。而且我知道當我們按下「結束」按鈕時,有些程序可能仍駐留在內存中,我必須通過任務管理器手動關閉它。

所以,我對這個問題有點困惑!在使用兩項活動時,我有什麼需要照顧的嗎?

+0

你爲什麼試圖從內存結束的過程中,我建議不要終止你的應用程序,安卓內存管理處理它自己 –

+0

你檢查了你的朋友的手機嗎?運行的應用程序與緩存在內存中的應用程序之間存在差異。 – Sam

+0

感謝您的回覆人..我沒有使用Android手機的經驗(只使用我朋友的一個Neo V,曾經)。我還沒有在手機上測試過這個應用程序..他測試了我的應用程序,並稱這是他唯一的問題,並建議修復它。由於我無法重現這種情況,所以我對做什麼感到困惑! –

回答

2

它不應該終止。有很多關於這方面的文章和問題。 Android本身決定何時從內存中移除活動。這是基於手機的硬件規格,內存利用率和其他因素。所以按End/Back 可能可能不會將應用程序留在內存中。在Android上使用任務殺手而流行,這是一個非常糟糕的主意。

+0

感謝您的信息。在撰寫此問題時,沒有彈出的問題(SO的自動提示功能)。現在明白了..謝謝.. –

相關問題