Android应用程序逻辑
在安卓应用程序中,当用户启动我的应用程序时,我希望加载一个与我通常会加载的不同的活动。因此,用户在第一次启动后使用应用程序后,会加载默认活动,但在第一次启动时会加载不同的活动。我计划设置一个共享首选项布尔值,以查看应用程序之前是否已启动。我是否应该首先加载默认活动,然后检查它是否是第一次启动,如果检查显示它是第一次启动,是否应该将该活动更改为不同的活动?或者反过来:首先加载在第一次启动时加载的活动,如果不是第一次启动,则加载默认活动。为什么不使用片段?加载主活动时,请检查标志,然后加载相应的片段。是的,您可以调用Android应用程序逻辑,android,Android,在安卓应用程序中,当用户启动我的应用程序时,我希望加载一个与我通常会加载的不同的活动。因此,用户在第一次启动后使用应用程序后,会加载默认活动,但在第一次启动时会加载不同的活动。我计划设置一个共享首选项布尔值,以查看应用程序之前是否已启动。我是否应该首先加载默认活动,然后检查它是否是第一次启动,如果检查显示它是第一次启动,是否应该将该活动更改为不同的活动?或者反过来:首先加载在第一次启动时加载的活动,如果不是第一次启动,则加载默认活动。为什么不使用片段?加载主活动时,请检查标志,然后加载相应的片段
startActivity(otherActivity)
然后FirstActivity.finish()
,立即在第一个活动的OnCreate
中调用您可以执行的操作(其中有一些警告)要在AndroidManifest中同时显示这两个活动,第一个要显示的活动设置为启用,另一个设置为禁用。然后,在第一个活动的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>
这里需要注意的是,如果用户已经在主屏幕上创建了应用程序的快捷方式,它将在第一次运行后消失,需要手动替换(尽管您可以添加INSTALL_快捷方式权限并手动添加,但我不建议这样做).在这种情况下,片段不会提供额外的优势,可能会使代码更难维护
@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);
}