Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Atlas加载bundle插件总结:ViewGroup中加载及本地startActivity方式

Atlas在ViewGroup中及本地startActivity方式加载bundle插件

public class AtlasDelegateHelper {

    //ViewGroup中加载
    public static void switchToActivity(Activity activity, ActivityGroupDelegate delegate, ViewGroup container, String key, String activityName) {
        Intent intent = new Intent();
        intent.setClassName(activity.getBaseContext(), activityName);
        delegate.startChildActivity(container, key, intent);
    }

    //本地加载
    public static void startBundleActivity(Context context, String activityName) {
        Intent intent = new Intent();
        intent.setClassName(context, activityName);
        context.startActivity(intent);
    }

    public static void startBundleActivity(Activity activity, String activityName) {
        Intent intent = new Intent();
        intent.setClassName(activity, activityName);
        activity.startActivity(intent);
    }

    public static void startBundleActivity(Fragment fragment, String activityName) {
        Intent intent = new Intent();
        Context context = fragment.getContext();
        if (context != null) {
            intent.setClassName(fragment.getContext(), activityName);
        }
        fragment.startActivity(intent);
    }

    public static void startBundleActivities(Activity activity, String... activityNames) {
        if (activityNames != null && activityNames.length > 0) {
            Intent[] intents = new Intent[activityNames.length];
            for (int i = 0; i < activityNames.length; i++) {
                intents[i] = new Intent();
                intents[i].setClassName(activity, activityNames[i]);
            }
            activity.startActivities(intents);
        }
    }

    public static void startBundleActivity(Activity activity, String activityName, Bundle bundle) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        intent.setClassName(activity, activityName);
        activity.startActivity(intent);
    }

    public static void startBundleActivity(Fragment fragment, String activityName, Bundle bundle) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        Context context = fragment.getContext();
        if (context != null) {
            intent.setClassName(fragment.getContext(), activityName);
        }
        fragment.startActivity(intent);
    }

    public static void startBundleActivities(Activity activity, String[] activityNames, Bundle[] bundles) {
        if (activityNames != null && bundles != null && activityNames.length > 0 && bundles.length == activityNames.length) {
            Intent[] intents = new Intent[activityNames.length];
            for (int i = 0; i < activityNames.length; i++) {
                intents[i] = new Intent();
                intents[i].putExtras(bundles[i]);
                intents[i].setClassName(activity, activityNames[i]);
            }
            activity.startActivities(intents);
        }
    }

    public static void startBundleActivityForResult(Activity activity, String activityName, Bundle bundle, int requestCode) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        intent.setClassName(activity, activityName);
        activity.startActivityForResult(intent, requestCode);
    }

    public static void startBundleActivityForResult(Fragment fragment, String activityName, Bundle bundle, int requestCode) {
        Intent intent = new Intent();
        intent.putExtras(bundle);
        Context context = fragment.getContext();
        if (context != null) {
            intent.setClassName(context, activityName);
        }
        fragment.startActivityForResult(intent, requestCode);
    }

}

区分ViewGroup中加载与本地startActivity方式加载

可通过Intent传参加以区分:

public enum IntentFlag {
    NONE,
    ACTIVITY_SINGLE,
    ACTIVITY_VIEW_GROUP
}

例如登录跳转:

if (mPageClass != null) {
    if (mBundle == null) {
        mBundle = new Bundle();
    }
    mBundle.putInt("activity_flag", IntentFlag.ACTIVITY_SINGLE.ordinal());
    AtlasDelegateHelper.startBundleActivities(mActivity, new String[]{ActivityConfig.ACTIVITY_MAIN, mPageClass.getName()}, new Bundle[]{new Bundle(), mBundle});
    mActivity.overridePendingTransition(R.anim.push_bottom_in, R.anim.push_bottom_out);
} else {
    AtlasDelegateHelper.startBundleActivity(mActivity, ActivityConfig.ACTIVITY_MAIN);
    mActivity.overridePendingTransition(R.anim.push_bottom_in, R.anim.push_bottom_out);
}
mActivity.finish();
上一篇 Atlas插件bundle与host通信之接口方式
下一篇 Atlas技巧