Android 处理用户被迫下线
2015-08-02 21:07
357 查看
Android应用如果跟账号相关,一般都不允许一个账号在多台设备上同时登录,当发生这种情况的时候就要把页面跳转到登录页要求用户重新登录。下面是发生这种情况的时候应用回退栈的情况:
这时有下面几种可能发生的情况:
1.用户使用刚才的账号重新登录:
在启动HomeActivity的时候,只要加上 Intent.FLAG_ACTIVITY_CLEAR_TOP标志就可以把HomeActivity上面的Activity弹出,使HomeActivity成为栈顶。
2.用户使用另外一个账号登录:
按照上面的方法,还要确保HomeActivity重新获得屏幕焦点的时候,显示当前用户的信息,而不是之前用户的信息(简单的实现就是把加载页面的工作放在onResume()方法里)。
3.用户直接点击返回键退出时:
可以直接调用 android.os.Process.killProcess(android.os.Process.myPid()); 简单粗暴地结束掉当前进程。
上面针对的都是一些简单的情况,实际工作的时候遇到的情况要比这个复杂得多。工作当中的HomeActivity往往包含一个viewpager,viewpager又对应了多个Fragment。在这个前提下,发生上述第二种情况的时候简直就是一场灾难(每个fragment都要恢复为当前用户的状态)!下面是我当前项目中的HomeActivity示意图。下面是一个tab栏,每个标签都对应一个fragment。
如果按照之前的方法,就是老老实实维护每个fragment的状态,使他们始终与当前用户保持同步。但是逻辑太复杂了,把所有情况都考虑到写出来的代码就没法看了!
继续回到我们的问题,其实问题的本质就是非栈顶Activity的维护问题。如果我们跳转到登录页的时候,栈底没有任何Activity,这样不就跟初次登录时一样了,一切问题不都迎刃而解了吗?
下面是我的思路:
在Application里面维护一个Activity列表,Activity创建时把自己加入这个列表中,销毁时把自己从这个列表中移除。如果Activity只是回到后台了
这时有下面几种可能发生的情况:
1.用户使用刚才的账号重新登录:
在启动HomeActivity的时候,只要加上 Intent.FLAG_ACTIVITY_CLEAR_TOP标志就可以把HomeActivity上面的Activity弹出,使HomeActivity成为栈顶。
2.用户使用另外一个账号登录:
按照上面的方法,还要确保HomeActivity重新获得屏幕焦点的时候,显示当前用户的信息,而不是之前用户的信息(简单的实现就是把加载页面的工作放在onResume()方法里)。
3.用户直接点击返回键退出时:
可以直接调用 android.os.Process.killProcess(android.os.Process.myPid()); 简单粗暴地结束掉当前进程。
上面针对的都是一些简单的情况,实际工作的时候遇到的情况要比这个复杂得多。工作当中的HomeActivity往往包含一个viewpager,viewpager又对应了多个Fragment。在这个前提下,发生上述第二种情况的时候简直就是一场灾难(每个fragment都要恢复为当前用户的状态)!下面是我当前项目中的HomeActivity示意图。下面是一个tab栏,每个标签都对应一个fragment。
如果按照之前的方法,就是老老实实维护每个fragment的状态,使他们始终与当前用户保持同步。但是逻辑太复杂了,把所有情况都考虑到写出来的代码就没法看了!
继续回到我们的问题,其实问题的本质就是非栈顶Activity的维护问题。如果我们跳转到登录页的时候,栈底没有任何Activity,这样不就跟初次登录时一样了,一切问题不都迎刃而解了吗?
下面是我的思路:
在Application里面维护一个Activity列表,Activity创建时把自己加入这个列表中,销毁时把自己从这个列表中移除。如果Activity只是回到后台了
相关文章推荐
- Android SDK在线更新镜像服务器
- Android Studio——Gradle 版本回退
- Android动态逆向分析工具ZjDroid--脱壳神器
- Android四大组件之Service(一)
- android 使用两个surfaceview 在摄像机画面上绘图
- android opencv 人脸检测
- Android之路
- Android基础知识之四大组件Activity(三)多个Activity交互的生命周期与设计思想
- Service和Thread的关系
- Android开源框架(一):AndroidAnnotations
- Android-单选按钮RadioButton和复选框checkbox
- android BaseAdapter的getView的调用时机
- Android 测试技能树
- Android 存储学习之使用SharedPreference保存文件
- Android 常用 adb 命令总结
- Android SensorManager getOrientation getRotationMatrix
- Android实例-路径信息及文件和文件夹的操作(XE8+小米2)
- Android瀑布流照片墙实现,体验不规则排列的美感
- 解析RecycleView 参考翔哥 android弟博客
- Android多点触控技术实战,自由地对图片进行缩放和移动