应用程序检查开始在不同的活动之间进行选择?
我有两个活动,但我想在应用程序启动时应用一个条件,如果一个是真的,那么开始第一个活动,然后开始第二个活动。现在我开始做第三项活动,展示一些受欢迎的东西,并检查背景中的值,然后调用适当的活动。我认为必须有一些标准的方法来做到这一点。和平。应用程序检查开始在不同的活动之间进行选择?
由于您需要指定清单中的开始活动,您可以随时启动第一个活动,检查您的条件onCreate()
,并且如果您需要开始第二个活动 - 从第一个活动开始第二个活动并致电finish()
。
否则通常人们会使用splash活动来检查启动时的所有条件(这是您当前的解决方案)。
您还可以执行无UI活动来执行测试,而不是在启动屏幕上忙碌。例如,此示例应用程序将通过“Theme.NoDisplay”LAUNCHER活动检查以确保我们正在使用Maps SDK附加组件运行:https://github.com/commonsguy/cw-omnibus/tree/master/Maps/NooYawkMapless – CommonsWare
我正在与Squonk的方法。 –
它与我的有什么不同? :) –
不需要第三个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);
...
}
}
}
条件是什么? – Squonk
if(something == 1){} else {} 那不是点 –
其实它是重点。如果你只是简单地将你的MAIN/LAUNCHER检查为onCreate(...)(在调用super.onCreate(...)后调用),它可以继续或调用' startActivity(...)'为另一个'Activity'并立即调用'finish()'。这样,如果条件决定第二个“活动”应该开始,那么第一个“活动”将永远不会被看到 - 不需要第三个“活动”。 – Squonk