在启动活动时在子活动内创建意图而不是父活动

时间:2016-10-31 09:12:23

标签: android android-intent android-activity optimization

如果在启动活动时我在子活动(要启动的活动)中而不是在父活动(启动新活动的活动)中创建意图,则性能和优化方面有何不同。

实施例 -

ChildActivity.class

public static Intent createIntent(Context context) {
    return new Intent(context, ChildActivity.class);
}

ParentActivity.class

     startActivity(ChildActivity.createIntent(ParentActivity.this));

这是一个好习惯吗?如果从多个活动开始相同的活动,这种方法会有什么优势吗?

1 个答案:

答案 0 :(得分:1)

我们可以使用这种做法,这样我们就可以通过调用静态方法从任何活动中启动Activity,我们将保存大量重复的代码。对我来说,我创建了一个Navigator类,这个类将存储所有启动活动的方法:

public class Navigator {
    public static final String VENUE_EXTRA = "venue_extra";

    private Navigator() {

    }

    public static void navigateToOnboarding(Activity activity) {
        Intent intent = new Intent(activity, OnboardingActivity.class);
        ActivityCompat.startActivity(activity, intent, null);
    }

    public static void navigateToSharing(Activity activity, Venue venue) {
        Intent intent = new Intent(activity, SharingActivity.class);
        intent.putExtra(VENUE_EXTRA, venue);
        ActivityCompat.startActivity(activity, intent, null);
    }

    public static void navigateToAppSetting(Activity activity) {
        Intent intent = new Intent();
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setData(Uri.parse("package:" + activity.getPackageName()));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        activity.startActivity(intent);
    }
}