2013-01-14 48 views
3
Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

,並使用此方法退出Android應用

moveTaskToBack(true); 

我開發一個應用程序,並在最後一次活動,我需要退出它,我用它退出應用程序的問題是,上述方法它存在只有活動和應用程序在後臺運行(在任務管理器中看到)。無論何時我再次加載應用程序,它將從我退出它的位置開始(最後一個活動)。

是否有任何代碼可以完全退出並刪除表單背景(任務管理器)。

在此先感謝。

+1

您應該更改Manifest中您的活動的行爲。閱讀SingleInstance,SingleTop等。 – RvdK

回答

5

要退出應用程序,返回到你的根活動(啓動器首次啓動的活動):

Intent intent = new Intent(this, MyRootActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addExtra("exit", "true"); 
startActivity(intent); 

這將清除任務堆棧下的根活動,然後再以此意圖啓動根活動。

在您的根系活力,在onCreate()您需要確定閹要退出基於意圖的演員,像這樣:

Intent intent = getIntent(); 
if (intent.hasExtra("exit")) { 
    // User wants to exit 
    finish(); 
} 

您也談談從任務管理器中刪除您的應用程序。如果您指的是「最近使用的應用程序列表」,這不是「正在運行的應用程序」列表,它是用戶最近使用的應用程序列表。僅僅因爲你的應用出現並不意味着它正在運行。

如果你真的想你的應用程序不會在「最近的應用程序列表」顯示,只需添加這爲您的根系活力清單項:

android:excludeFromRecents="true" 
0

爲什麼你根本就沒有使用

this.finish() 

0

當你調用startActivity(intent);添加finish();後關閉舊活動(除非你想回來,在未來的活動)

,所以你的代碼會看起來像:

startActivity(intent); 
finish(); 
1

如果你不想打電話給finish();那麼你也可以添加

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+0

請注意'Intent.FLAG_ACTIVITY_CLEAR_TASK'只能從API 11(Android 3.0)開始使用。 –

+0

謝謝,但不幸的是我使用** API 7 ** :(: – yashhy

0

試試這個:

Intent finishapp = new Intent(Intent.ACTION_MAIN); 
finishapp.addCategory(Intent.CATEGORY_HOME); 
finishapp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(finishapp); 
+0

我不能理解你改變了什麼,除了重命名變量意圖finishapp。 –

+0

我沒有細心。我複製代碼從我的項目,它的工作原理對我來說,我使用此代碼關閉了第二項活動中的應用。 – xck

0

你必須通過調用

Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
    activity.this.finish(); 

或完成活動可以調用destroy方法在你的活動

@Override  
    public void onDestroy() 
    { 
     super.onDestroy(); 
     finish(); 
    } 
1

,使用此代碼開始的最近活動清除所有的活動堆棧。當你按下後退按鈕或致電finish()它將退出該活動。

Intent intent = new Intent(this, YourActivityD.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

注意FLAG_ACTIVITY_CLEAR_TASK只能從API 11
欲瞭解更多信息,請參見:http://developer.android.com/guide/components/tasks-and-back-stack.html

0

這裏是我工作的代碼

您退出按鈕:

Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
ComponentName cn = intent.getComponent(); 
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn); 
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
mainIntent.putExtra("close", true); 
startActivity(mainIntent); 
finish(); 

該代碼是關閉任何其他活動,並將MainActivity放在頂部 上喲您的主活動:

if(getIntent().getBooleanExtra("close", false)){ 
    finish(); 
}