2011-04-02 61 views
3

有什麼辦法,如何從堆棧中完成某些活動?我有服務,它會查找更新,當找到更新時,它會打開更新活動,其中將顯示安裝提示。但是在安裝出現後,我想完成更新活動,因爲沒有必要仍然在堆棧中。Android - 從另一個活動完成活動

感謝

回答

5

如果更新活動正在啓動另一個安裝活動,那麼您可能希望在更新活動中覆蓋void onActivityResult(int requestCode, int resultCode, Intent intent),並提供以下實施。另外,當更新活動啓動安裝活動時,它應該使用startActivityForResult(Intent, int)而不是startActivity(Intent)

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) 
    { 
    super.onActivityResult(requestCode, resultCode, intent); 
    finish(); 
    }
+0

感謝您的評論 – Waypoint 2011-04-02 14:02:34

2

使用完成()的活動類的方法來完成某些活動

this.finish(); // you can also use the application context instead of this 

希望這會幫助你。

+0

如果我已經叫活動更新 - 我可以從其他類update.finish調用()? - 這就是我需要的 – Waypoint 2011-04-02 12:24:55

+0

我正在使用finish(),但仍然無法完成其他(較新)活動的堆棧中的一個活動 – Waypoint 2011-04-02 12:27:59

+0

使用** finishActivity(int requestCode)**方法以完成另一個您以前開始的活動** startActivityForResult(Intent,int)**。 – 2011-04-03 05:35:25

0

但是安裝後,我想完成更新活動,因爲它不需要仍然在堆棧上。

當你的「更新活動」呼籲startActivity(),彈出「安裝」,它立刻撥打finish()本身。

+0

是的,問題是我從AsyncTask開始新的活動,所以我不能完成()本身 – Waypoint 2011-04-02 12:51:35

+0

@Hmyzak:永遠不要從'AsyncTask'開始一個新的活動。這是用戶敵對的,導致一個活動隨機出現而沒有警告。 – CommonsWare 2011-04-02 12:55:34

+0

通過AsyncTask我正在下載文件進行更新,當我完成下載時,我使用onPostExecute來安裝此應用程序。我沒有別的辦法,你呢? – Waypoint 2011-04-02 13:00:26

3

請嘗試此操作。

在第一個活動中,在onCreate之前定義這個。

static TabsViewPagerFragmentActivity activityMain; 

然後,在onCreate的第一個活動中,寫下這個。

activityMain = this; 

然後,在第二個活動中,當你想完成第一個活動時寫下這個。

TabsViewPagerFragmentActivity.activityMain.finish(); 

這會破壞第一個活動,當您按下第二個活動時,您將直接返回主頁。

+0

對活動的靜態引用 - 內存泄漏 – Lester 2016-11-13 10:12:22

5

非常有用的代碼

classname.static object.finish(); 
+3

這是一種糟糕的或良好的做法? – 2013-06-05 19:50:45