工具类1:LoginCarrier.java

import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.os.Parcel;import android.os.Parcelable; /** * 登录器载体 */public class LoginCarrier implements Parcelable {    public String mTargetAction;    public Bundle mbundle;    protected LoginCarrier(Parcel in) {        mTargetAction = in.readString();        mbundle = in.readBundle(Bundle.class.getClassLoader());    }    /**     * 重新构造函数  用于传参     * @param target 目标activity     * @param bundle 向目标传递的参数     */    public LoginCarrier(String target, Bundle bundle) {        mTargetAction = target;        mbundle = bundle;    }    @Override    public int describeContents() {        return 0;    }    /**     * 通过writeToParcel将你的对象映射成Parcel对象     * @param dest     * @param flags     */    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(mTargetAction);        dest.writeBundle(mbundle);    }    /**     * 已经登录的状态下执行的方法     * @param ctx     */    public void invoke(Context ctx) {        Intent intent = new Intent();        intent.setClassName(ctx, mTargetAction);        if (mbundle != null) {            intent.putExtras(mbundle);        }        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        ctx.startActivity(intent);    }    public static final Creator CREATOR = new Creator() {        @Override        public LoginCarrier createFromParcel(Parcel in) {            return new LoginCarrier(in);        }        @Override        public LoginCarrier[] newArray(int size) {            return new LoginCarrier[size];        }    };}

工具类2:LoginInterceptor.java

import android.content.Context;import android.content.Intent;import android.os.Bundle;import com.nativeTools.Config;import com.vipcio.activity.LoginActivity;/** * 登录判断类 */public class LoginInterceptor {    // 这里获取登录状态    private static boolean getLogin() {        return Config.API.is_login;    }    /**     * @param ctx 当前activity的上下文     * @param target 目标activity     * @param bundle 需要传递的参数     * @param intent     */    public static void interceptor(Context ctx, String target, Bundle bundle, Intent intent) {        if (target != null && target.length() > 0) {            LoginCarrier invoker = new LoginCarrier(target, bundle);            if (getLogin()) {                invoker.invoke(ctx);            }else{                if (intent == null) {                    intent = new Intent(ctx, LoginActivity.class);                    intent.putExtra(Config.API.loginInterceptorInvoker, invoker);                }                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                ctx.startActivity(intent);            }        }    }    public static void interceptor(Context ctx, String target, Bundle bundle) {        interceptor(ctx, target, bundle, null);    }}

跳转拦截使用:

Bundle bun = new Bundle();bun.putString("name","大黑");LoginInterceptor.interceptor(activity, "目标Activity的名字", bun);

登录成功后的操作:

LoginCarrier invoker = (LoginCarrier) getIntent().getParcelableExtra(Config.API.loginInterceptorInvoker);invoker.invoke(LoginActivity.this);finish();

总结:

注意 Config.API.loginInterceptorInvoker  是个常量字符串, 想定义什么值都行

更多相关文章

  1. android webview 添加内置对象
  2. 在android中创建包含对象数组对象List 的Parcelable
  3. android解析二维数组对象key:value
  4. Android五大布局对象
  5. 基于Android studio3.6的JNI教程之ncnn之目标检测ssd
  6. Android 随时随地键值对存储对象解决方案

随机推荐

  1. android封装Toast
  2. 各种android下载资源
  3. ViewGroup和LayoutParams之间的关系
  4. Launcher源码中Intent.createChooser()实
  5. Android中利用matrix 控制图片的旋转、缩
  6. 解析 dex 文件结构 - DexHeader
  7. android 复制 粘贴 剪切功能应用
  8. 技术|Android安装包极限优化
  9. android 学习摘要
  10. 【M3U8】测试地址及android播放器