2011-04-02 62 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