码迷,mamicode.com
首页 > 移动开发 > 详细

Android登录拦截器实现方式(一)

时间:2015-08-05 01:16:10      阅读:1177      评论:0      收藏:0      [点我收藏+]

标签:android登录 拦截器 interceptor

  对于App端来说,如果能保证用户在登录后能自动延续登录前的操作,将是非常不错的用户体验。所以专门花了点时间,想了两种方式来实现该种需求。

   这篇文章讲先第一种方式,这种方式实现的思路大致是这样:

   在执行需要登陆状态的操作时,将该操作交由拦截器处理,该拦截器会把该操作延后到登陆成功后处理。

   举个例子,用户想查看个人资料,通常的做法是先判断登录与否,如果没有登录,得先去登录,然后从登录页返回后在onActivityResult中再执行相应的跳转。但如果使用拦截器后,你只需将个人资料页必要的信息(比如标记activity的action)传给拦截器,拦截器经过处理后,再跳到个人资料页,这样你只需要关心你原有的需求,查看个人资料即可。

   接下来看代码:

public void jumpToActivity(Context ctx, String target, Bundle params) {
		jumpToActivity(ctx, target, params, new Intent(ctx, getLoginClass()));
	}

	/**
	 * 
	 * @param ctx
	 * @param target
	 *            目标activity的action
	 * @param params
	 *            需要传给目标activity的参数
	 * @param loginIntent
	 *            带参数的指向登录页的intent
	 */
	public void jumpToActivity(Context ctx, String target, Bundle params,
			Intent loginIntent) {
		if (TextUtils.isEmpty(target) || loginIntent == null)
			throw new RuntimeException("No target activity.");

		JumpInvoker invoker = new JumpInvoker(target, params);
		if (logon()) {
			invoker.invoke(ctx);
		} else {
			loginIntent.putExtra(INVOKER, invoker);
			loginIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			ctx.startActivity(loginIntent);
		}
	}

    代码JumpInvoker对象是登录成功后的逻辑执行者,它会被传输到登录模块中,在登录成功后执行invoke方法跳到指定页面,见代码:

    

        @Override
	public void invoke(Context ctx) {
		Intent it = new Intent(mTargetAction);
		it.putExtras(mData);
		it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		ctx.startActivity(it);
	}


使用方式:

    1.在登录成功的地方获利Invoker对象,调用Invoker.invoke方法。

    Invoker invoker = getIntent().getParcelableExtra(Interceptor.INVOKER);
	invoker.invoke(getApplicationContext());

   2.需要跳转到登录后显示的Activity时,可使用代码中的jumpToActivity方法,将目标页的action及参数(非必须)传进即可。


    源码与jar包见附件,其中只实现在登录跳转的逻辑。对于其它需求,比如收藏点击,在登录后自动收藏,也可以参照实现Interceptor与Invoker接口即可。

本文出自 “Android Pool” 博客,请务必保留此出处http://yeerik.blog.51cto.com/10547727/1681729

Android登录拦截器实现方式(一)

标签:android登录 拦截器 interceptor

原文地址:http://yeerik.blog.51cto.com/10547727/1681729

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!