应用程序检查开始在不同的活动之间进行选择?

问题描述:

我有两个活动,但我想在应用程序启动时应用一个条件,如果一个是真的,那么开始第一个活动,然后开始第二个活动。现在我开始做第三项活动,展示一些受欢迎的东西,并检查背景中的值,然后调用适当的活动。我认为必须有一些标准的方法来做到这一点。和平。应用程序检查开始在不同的活动之间进行选择?

+0

条件是什么? – Squonk

+0

if(something == 1){} else {} 那不是点 –

+0

其实它是重点。如果你只是简单地将你的MAIN/LAUNCHER检查为onCreate(...)(在调用super.onCreate(...)后调用),它可以继续或调用' startActivity(...)'为另一个'Activity'并立即调用'finish()'。这样,如果条件决定第二个“活动”应该开始,那么第一个“活动”将永远不会被看到 - 不需要第三个“活动”。 – Squonk

由于您需要指定清单中的开始活动,您可以随时启动第一个活动,检查您的条件onCreate(),并且如果您需要开始第二个活动 - 从第一个活动开始第二个活动并致电finish()

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

+0

您还可以执行无UI活动来执行测试,而不是在启动屏幕上忙碌。例如,此示例应用程序将通过“Theme.NoDisplay”LAUNCHER活动检查以确保我们正在使用Maps SDK附加组件运行:https://github.com/commonsguy/cw-omnibus/tree/master/Maps/NooYawkMapless – CommonsWare

+0

我正在与Squonk的方法。 –

+0

它与我的有什么不同? :) –

不需要第三个Activity来检查条件。

如果你只是对条件,因为它在onCreate(...)做的第一件事(但调用super.onCreate(...)后)你的主/ LAUNCHER Activity检查,它可以继续或致电startActivity(...)为其他Activity,并立即拨打finish()自我-terminate。

如果条件决定第二个Activity应该启动,那么第一个Activity将永远不会出现。

例..

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); 
      ... 
     } 
    } 
}