package com.android.app_base.base.action; import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; /** * Activity 相关意图 */ public interface ActivityAction { /** * 获取 Context */ Context getContext(); /** * 获取 Activity */ default Activity getActivity() { Context context = getContext(); do { if (context instanceof Activity) { return (Activity) context; } else if (context instanceof ContextWrapper) { context = ((ContextWrapper) context).getBaseContext(); } else { return null; } } while (context != null); return null; } /** * 启动一个 Activity(简化版) */ default void startActivity(Class clazz) { startActivity(new Intent(getContext(), clazz)); } /** * 启动一个 Activity */ default void startActivity(Intent intent) { if (!(getContext() instanceof Activity)) { // 如果当前的上下文不是 Activity,调用 startActivity 必须加入新任务栈的标记 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } getContext().startActivity(intent); } }