2013-01-19 126 views
-1

我想知道是否有stopActivity()函數,如stopService()函數。關閉另一個活動

我的研究表明,沒有這樣的功能。但是,我仍然需要關閉另一個活動的能力。

我該如何做到這一點?

回答

0

前幾天我有這個問題,我很高興地告訴你,我找到了解決辦法。

首先,對活動要停止在AndroidManifest.xml補充一點:

android:launchMode="singleTop" 

我要使用一個CheckBox實例。當它被檢查時,活動已開始,未選中時將終止該活動。

示例活動A正在調用活動B,然後使用意向對其進行殺死。被放在一個

代碼:

checkbox.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent intent = new Intent(A.this, B.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      if (enable.isChecked()) { 
       intent.putExtra("keep", true); 
       startActivity(intent); 
      } 
      else 
      { 
       intent.putExtra("keep", false); 
       startActivity(filterAct); 
      } 
     } 
    }); 

代碼被放入B:

boolean keep; 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.B); 
    intent = this.getIntent(); 
    boolean keep = brightnessIntent.getExtras().getBoolean("keep"); 
    if(keep==true) 
    { 
     //execute your code here 

    } 
} 
    @Override 
protected void onNewIntent(Intent intent) 
{ 
    super.onNewIntent(intent); 
    keep = intent.getExtras().getBoolean("keep"); 
    if(keep==false) 
    { 
     B.this.finish(); 
      } 
} 
} 

說明:這是什麼基本上做的是,當複選框被選中它調用的活動,傳遞一個布爾值,如果它是真的活動保持活躍並被帶到前臺。現在,如果您未通過國旗singleTop,則會創建此活動的許多實例。 singleTop確保只調用同一個實例。現在,當取消選中複選框時,將傳遞一個新的keep值,並在B中進行驗證。如果未選中,則活動A將傳遞false,因此B將從onNewIntent()函數中自行終止。

P.S - 您也可以從其他活動中關閉活動B.只需使用 如果另一項活動是C:

Intent intent = new Intent(C.this, B.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
       intent.putExtra("keep", false); 
       startActivity(intent); 
0

您可以使用對方的回答殺死一個活動,但它不是直接的原因是,他們真的想你了跟隨活動的生命週期。

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

在你的onPause()的實現,你應該停頓與活動有關的任何長期運行的處理,除非有充分的理由繼續下去。

除非需要內存,否則Android會保留Activity,因爲重用已經實例化的Activity要比實例化一個新的Activity快得多。最好讓Android爲你管理內存,而不僅僅是自己殺死活動。