0

我需要知道是否有任何方法可以知道何时在 Activity 上按下后退按钮时将打开的 Activity 是什么。我想我可以看看活动堆栈,但我需要一些关于如何做的指针。

提前致谢。

编辑:感谢所有答案,但我仍然想解释真正的问题。

我有一个应用程序,其中包含大量消耗大量电量的活动(传感器、gps 和 wifi),当我不使用该“任务”(即去做其他事情)时,我想保持安静。

我如何才能捕获在后台堆栈中没有更多应用程序的事件?

4

4 回答 4

1

如果你能猜到哪个活动,那么你可以在条件语句中使用 instanceof 方法

@Override
public void onBackPressed(){
Context mycontext = this;
if(mycontext instanceof className)
{ 
   startActivity(new Intent(this, distinatinClass);
}
else if(mycontext instanceof differentClassName)
....
else
....
}
于 2011-04-15T15:34:34.990 回答
1

请参阅此针对 android 的任务设计

这也应该有帮助

各种API,变量可用:

任务亲和

启动模式

allowTaskReparenting

clearTaskOnLaunch

alwaysRetainTaskState

完成任务启动

于 2011-04-15T15:45:17.793 回答
1

ActivityX从to发送额外的意图ActivityY。额外的可能是对标识活动的常量值的引用。

ActivityX

startActivity(new Intent(context, ActivityY.class).putExtra("fromActivity", Const.EXTRA_FROM_ACTIVITY_X));

ActivityYB

private int fromActivity;
public void onCreate(Bundle savedInstanceState) {
    ...
        fromActivity = getIntent().getExtras().getInt("fromActivity");
    ...
}
public void onBackPressed() {
    switch(fromActivity) {
        case Const.EXTRA_FROM_ACTIVITY_X:
            //we are going back to ActivityX
            break;
    }
}

Const保存唯一变量的类在哪里,static final int例如EXTRA_FROM_ACTIVITY_X

于 2011-04-15T15:47:44.520 回答
0

我认为您应该更好地详细描述您的问题,让我们帮助您找到最佳解决方案,而不是试图找到一种方法来实施您选择的解决方案,因为它违反了 Android OS 的原则和假设,所以看起来很糟糕。

于 2015-10-16T17:22:26.277 回答