自动切换活动

时间:2014-02-07 12:28:48

标签: java android android-intent android-activity

我是Android编程的新手,所以我可能在这里错过了一些简单的东西。

目标是创建数字标牌应用的原型。现在我创造了三个活动; MainActivity有一种方法可以在一段时间后切换到第二个活动。然后从第二个活动到第三个活动调用相同的方法,从第三个活动调用相同的方法调用main。

但是有两个问题:首先,每次应用程序在活动之间切换时是否可以创建新的Intent?正如我所提到的,我最近开始学习Android,所以如果这是一个非常愚蠢的问题,请不要生气。

第二:即使我在finish();

之后拨打startActivity(intent);,我在我的模拟器中按下主页按钮后,应用也会自动启动

以下是MainActivity

中的方法
public void switchActivities(final Class<?> classObject) {
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        @Override
        public void run() {
            Intent intent = new Intent(getApplicationContext(), classObject);
            startActivity(intent);
            finish();
        }

    }, 1000);
}

活动Second和Third扩展MainActivity并调用switchActivities方法: switchActivities(Third.class);(从第二到第三)。

提前致谢!

更新: 我将public boolean isRunning = true;添加到了我的MainActivity和 if(isRunning) startActivity(intent);到switchActivities方法; 我还添加了一个方法

@Override
protected void onPause(){
    super.onPause();
    isRunning = false;
}

这里建议。

虽然finish();应该已经清除了方法堆栈,但是在按下Home按钮后应用程序没有关闭,而是转到上一个活动,所以我将此行添加到AndroidManifest文件中的每个活动:

android:noHistory="true"

建议here

很抱歉没有提供有用的答案,我还没有足够的声誉。

3 个答案:

答案 0 :(得分:1)

活动之间用于导航的Intent,所以使用它很酷,没问题

第二个问题,因为在您点击“主页”按钮后Activity对象仍在您的内存中,然后Handler将继续其工作并在您在代码中确定的特定时间段后开始活动

答案 1 :(得分:1)

是的,这是通过创建新意图来切换活动的正确方法。我对你的第二个问题感到困惑。如果你说你正在使用postDelayed方法,它会在一段时间后被触发,即使你已经完成了你的活动或按下了主页按钮,你也可以通过在你的活动中创建一个布尔变量isRunning来处理这个问题,当onPause时它会变为false或onDestroy被调用。然后,在您的postdelayed方法中,您可以检查标志,然后根据需要继续。

答案 2 :(得分:0)

对于您的第一个问题:每次创建新Intent都不是问题

第二个有点棘手。当您按下主页按钮时,当前活动将保留在内存中,因此即使您认为它未运行,它也可以启动新活动。处理此操作以检查活动的最简单方法是完成活动,如果是,则不显示下一个活动。

if (!isFinishing()) startActivity(intent);

此if语句会阻止您的活动在后台启动新活动。