是否可以使用基于平台的不同MainActivity?

时间:2015-08-05 03:20:09

标签: android android-activity

是否有可能通过Android Manifest文件将基于底层android平台调用不同活动作为应用程序主要活动的某种条件?

在我的情况下,我想要API-8到11的不同主要活动,从11开始我想要一个不同的活动作为主要活动。

所以我现在在android清单文件中使用以下代码

    <activity
        android:name="myapp.org.MainActivity"          
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

请注意,我有一个应用程序,其5-10%的用户仍在2.2和2.3平台上,继续支持旧平台太痛苦了。

请指教,

感谢, 艾哈迈德

解释我为什么要这样做:

应用程序脚印仅小0.6 MB,我的计划是复制整个代码并为新版本增强它,这可能会使脚印增加一倍。然后基于平台启动适当的主动性,如果平台是更新的主要活动来自更新的代码部分将执行,遗留代码永远不会有机会执行(我相信),反之亦然,

我能想到的唯一缺陷是,如果android系统以某种方式直接实例化类,这可能只会在清单中声明一个广播接收器时发生,我不会这样做...所以我希望它是安全的向所有用户发布单个二进制文件,并在运行时执行适当的代码。随着用户数量的进一步下降,遗留代码将从主二进制文件中丢弃。

所有代码都在项目中,这是一个android库,主应用程序是一个使用该库的存根,如果我意识到我上面描绘的场景,我将有两个安卓库,一个旧的库和新的。

4 个答案:

答案 0 :(得分:2)

也许您可以添加新的LauncherActivit来判断API级别,然后导航到API级别的不同MainAcivity基础。

答案 1 :(得分:0)

有一个更好的主意,在主要活动中在onCreate中添加获取API版本的条件,如果它是froyo,例如完成此活动并启动另一个,则继续使用此活动。 在这里,您是一个显示如何获取API的链接: Retrieving Android API version programmatically

答案 2 :(得分:0)

如果仅用于主要活动,此解决方案可能有点过多,您应该使用其他解决方案之一,但如果您想将整个应用程序按API级别分开,我建议使用{{3 Android版。

答案 3 :(得分:0)

如果您正在开发Android Studio,请查看gradle flavor,它们允许您为每个平台编译不同的主要活动,拥有不同的资源,图标,字符串等。