Android 在应用程序启动时应用检查以在不同的活动之间进行选择?

Android 在应用程序启动时应用检查以在不同的活动之间进行选择?,android,android-activity,Android,Android Activity,我有两个活动,但我想在应用程序启动时应用一个条件,如果其中一个为真,则启动第一个活动,否则启动第二个活动。现在我开始第三个活动,显示一些受欢迎的内容,并在后台检查值,然后调用相应的活动。我认为必须有一些标准的方法来做到这一点。和平 因为您需要在清单中指定启动活动,所以始终可以启动第一个活动,在onCreate上检查您的条件,如果需要启动第二个活动,请启动第二个活动,并为第一个活动调用finish 否则,通常人们使用splash activity来检查当前解决方案启动时的所有条件。由于需要在清单中

我有两个活动,但我想在应用程序启动时应用一个条件,如果其中一个为真,则启动第一个活动,否则启动第二个活动。现在我开始第三个活动,显示一些受欢迎的内容,并在后台检查值,然后调用相应的活动。我认为必须有一些标准的方法来做到这一点。和平

因为您需要在清单中指定启动活动,所以始终可以启动第一个活动,在onCreate上检查您的条件,如果需要启动第二个活动,请启动第二个活动,并为第一个活动调用finish


否则,通常人们使用splash activity来检查当前解决方案启动时的所有条件。

由于需要在清单中指定启动活动,因此始终可以启动第一个活动,检查onCreate上的条件,如果需要启动第二个—启动第二个,并为第一个活动调用finish


否则,通常人们会使用splash活动来检查启动时的所有条件,这是您当前的解决方案。

不需要第三个活动来检查条件

如果您只是简单地让主/启动器活动检查条件,就像它在onCreate中做的第一件事一样。。。但在调用super.onCreate…,它可以继续或调用startActivity。。。对于其他活动,请立即调用finish以自行终止

这样,如果条件要求启动第二个活动,则永远不会看到第一个活动

例如

public class FirstActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Don't even set the content view at this point
        // we want to be invisible for the moment

        // Pseudo-code check for condition
        if (!runMe) {
            Intent i = new Intent(this, SecondActivity.class);
            startActivity(i);
            finish();
        }
        else {
            // Continue as normal
            setContentView(R.layout.main);
            ...
        }
    }
}

不需要第三个活动来检查状况

如果您只是简单地让主/启动器活动检查条件,就像它在onCreate中做的第一件事一样。。。但在调用super.onCreate…,它可以继续或调用startActivity。。。对于其他活动,请立即调用finish以自行终止

这样,如果条件要求启动第二个活动,则永远不会看到第一个活动

例如

public class FirstActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Don't even set the content view at this point
        // we want to be invisible for the moment

        // Pseudo-code check for condition
        if (!runMe) {
            Intent i = new Intent(this, SecondActivity.class);
            startActivity(i);
            finish();
        }
        else {
            // Continue as normal
            setContentView(R.layout.main);
            ...
        }
    }
}


您还可以有一个执行测试的无UI活动,而不是在启动屏幕上大惊小怪。例如,此示例应用程序检查以确保我们通过Theme.NoDisplay LAUNCHER活动在带有Maps SDK附加组件的设备上运行:我将使用Squonk的方法。:P实际上,我是在阅读了他的评论后得出这个想法的。.现在,它们在我看来是一样的@帕维尔杜卡:在我正确阅读你的答案之前,我把我的评论贴到了原始问题和我的答案上。我对最初的问题发表了另一条评论,说你已经提出了基本想法。我将保留我的答案,因为它包含了未来可能会寻找类似解决方案的用户的示例代码。您也可以使用无UI活动来执行测试,而不是在启动屏幕上大惊小怪。例如,此示例应用程序检查以确保我们通过Theme.NoDisplay LAUNCHER活动在带有Maps SDK附加组件的设备上运行:我将使用Squonk的方法。:P实际上,我是在阅读了他的评论后得出这个想法的。.现在,它们在我看来是一样的@帕维尔杜卡:在我正确阅读你的答案之前,我把我的评论贴到了原始问题和我的答案上。我对最初的问题发表了另一条评论,说你已经提出了基本想法。我将保留我的答案,因为它包含了任何未来用户可能正在寻找类似解决方案的示例代码。如果您只是简单地让主/启动器检查条件,这是它在onCreate中做的第一件事。。。在调用super.onCreate…,它可以继续或调用startActivity。。。对于其他活动,请立即调用finish。这样,如果条件要求启动第二个活动,第一个活动将永远不会被看到-不需要第三个活动。也许你可以将其作为答案发布,以便我可以接受。将我的评论转换为答案,并为StackOverflow的未来用户稍加填充。实际上,我刚刚注意到Pavel Dudka的答案非常简单和我一样,他先到了那里。你可以接受我的或他的。如果某物==1{}或者{}那不是重点,实际上是重点。如果您只是简单地让主/启动器检查条件,这是它在onCreate中做的第一件事。。。在调用super.onCreate…,它可以继续或调用startActivity。。。对于其他活动,请立即调用finish。这样,如果条件要求启动第二个活动,第一个活动将永远不会被看到-不需要第三个活动。也许你可以将其作为答案发布,以便我可以接受。将我的评论转换为答案,并为StackOverflow的未来用户稍加填充。实际上,我刚刚注意到Pavel Dudka的答案非常简单和我一样,他先到了那里。你可以接受我的,也可以接受他的。