Android:动态选择启动 Activity 并不总是有效

标签 android dynamic android-activity launcher

我在这里(和其他地方)阅读了几篇文章,描述了如何在启动应用程序时动态选择要显示的 Activity 。下面是我的代码:

AndroidManifest.xml

<activity android:name=".StartupActivity"
          android:theme="@android:style/Theme.NoDisplay">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

启动 Activity .java

public class StartupActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        Intent intent;
        if (RandomClass.getSomeStaticBoolean())
        {
           intent = new Intent(this, ActivityOften.class);
        }
        else
        {
           intent = new Intent(this, ActivityRare.class);
        }
        startActivity(intent);
        finish();
    }
}

ActivityOften 和 ActivityRare 都在 list 中声明(当然没有启动器类别)并分别扩展 ListActivity 和 Activity。 99% 的时间第一个显示的 Activity 是基于 RandomClass.getSomeStaticBoolean() 的 ActivityOften。

因此,第一次从图标启动我的应用程序时,我进入了 StartupActivity.onCreate。选择是正确的。但是随后任何启动应用程序的尝试(从快捷方式或应用程序菜单)再次显示 ActivityOften。 StartupActivity 类中没有进一步的中断。尽管我知道 RandomClass.getSomeStaticBoolean() 已经改变了值并且 ActivityRare 应该出现,但第一个 Activity 仍然弹出。

有什么想法吗?

谢谢,Merci、Gracias、Danke、Grazie! 肖恩

最佳答案

这是因为您的应用程序 Activity 是从历史堆栈加载的。 在 ActivityOftenActivityRare 的 list 中设置 android:noHistory=true。那应该可以解决您的问题。

关于Android:动态选择启动 Activity 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7511126/

相关文章:

android - 如何在 Android 中显示使用相机捕获的图像

android - 尝试检查用户是否登录时出现无限循环。google +

android - Activity setRequestedOrientation 横向与 reverseLandscape?

java - 我可以覆盖 Android 上的自动超时吗?

java - Activity 在android中动态加载xml布局

android - 非矩形 fragment/交织布局

java - 使用 AndEngine 的加速器传感器方向

Android - 扩展 ImageView 的最佳实现

c - MPI 段。将发送/接收与动态分配一起使用时出错

c# - 有没有办法从静态方法访问缓存或 session ?