Android应用程序逻辑

时间:2014-08-22 16:51:25

标签: android

在Android应用程序中,我想在用户启动应用程序时加载不同的活动。因此,用户在第一次启动后使用应用程序后,将加载默认活动,但首先启动时会加载另一个活动。我打算设置一个共享首选项布尔值来查看该应用程序之前是否已经启动过。我应该首先加载默认活动,然后检查它是否是第一次启动,如果检查显示它是第一次启动,则将活动更改为其他活动?或者反过来说:首先加载首次加载的活动,如果它不是第一次启动,则加载默认活动。

3 个答案:

答案 0 :(得分:0)

为什么不使用片段?加载主活动时,检查标志,然后加载相应的片段。

答案 1 :(得分:0)

是的,您可以在第一个活动startActivity(otherActivity)

中立即致电firstAcitivy.finish()然后OnCreate

答案 2 :(得分:0)

你可以做些什么(有一些注意事项)是在AndroidManifest中同时进行这两项活动,第一项活动设置为enabled,另一项disabled。然后,在您的第一个活动onCreate()中,停用该活动并启用第二个活动:

<activity
    android:name=".Activity1"
    android:enabled="true"
    android:label="@string/title_activity_activity1">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

<activity
    android:name=".Activity2"
    android:enabled="false"
    android:label="@string/title_activity_activity2">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

现在,在您的Activity1&#39; onCreate()

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity1);

    // Enable the second one
    setActivityEnabled(true, Activity2.class);

    // Disable the current one
    setActivityEnabled(false, Activity1.class);
}

void setActivityEnabled(boolean enabled, Class<? extends Activity> activityClass) {
    int state = enabled ?
            PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
            PackageManager.COMPONENT_ENABLED_STATE_DISABLED;

    getPackageManager().setComponentEnabledSetting(
            new ComponentName(this, activityClass), state, PackageManager.DONT_KILL_APP);
}

需要注意的是,如果用户已在主屏幕上创建了应用程序的快捷方式,则在第一次运行后它将消失并需要手动替换(尽管您可以添加INSTALL_SHORTCUT权限并添加它手动,但我不建议。)