关于Android实现 退出登录那些小事?
2017-04-29 01:03
435 查看
使用场景:
相信大家应该清楚每一个app都会有一个”退出登陆”的功能,有的可能在个人中心有的在设置里面。当用户点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,那么到底该怎么实现呢?
核心思想分析:
当点用户击登陆的时候发送一个广播BroadcastReceiver时候,然后在你的BaseActivity里面手动注册一个广播,当收到广播后finish,这样所有继承这个Base的Activity就都finish掉了轻松搞定!,
主要代码
点击退出登录:发送广播
接收广播:finish界面(在BaseActivity里面接收)
第二种
大家都知道 Android 的 Activity 是存着历史栈的,比如从 A -> B -> C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程序就自然退出了。 当然在 finish 的同时也需要是否自己程序的其他资源。所以需要想个办法把 Activity 给存起来。然后在程序退出的地方调用它们的 finish()方法。
使用全局变量。对了,第一个想到的就是继承 Application
public class MyApplication extends Application { private
List activities = new ArrayList();
activity onCreate 的时候来调用 addActivity (),有人可能想到这个Application需要在所有的 Activity onCreate的时候都使用,需要做一个单例实例。其实根本不需要。在 Activity 中使this.getApplication() 就可以了。
最后在你需要推出程序的地方调用 application.onTerminate() 就可以了。记住:super.onTerminate() 必须调用,代码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。
运行以上代码后,在LogCat 中会出现一行提示:
android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); ActivityManager manager = (ActivityManager)
getSystemService(ACTIVITY_SERVICE);
manager.killBackgroundProcesses(getPackageName());种方式都能达到同样的效果,但是在模拟器上都会弹出 Unfortunately , XXX has stopped
消息提示框,但确实能退出应用。部分真机直接失效,所以是不靠谱的。
懒人专用:
相信大家应该清楚每一个app都会有一个”退出登陆”的功能,有的可能在个人中心有的在设置里面。当用户点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,那么到底该怎么实现呢?
核心思想分析:
当点用户击登陆的时候发送一个广播BroadcastReceiver时候,然后在你的BaseActivity里面手动注册一个广播,当收到广播后finish,这样所有继承这个Base的Activity就都finish掉了轻松搞定!,
主要代码
点击退出登录:发送广播
Intent intent = new Intent(); intent.setAction("is_exit_app"); sendBroadcast(intent);
接收广播:finish界面(在BaseActivity里面接收)
MyReceiver receiver; private void registerBroadcast() { // 注册广播接收者 receiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("is_exit_app"); context.registerReceiver(receiver,filter); class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals(ConstantUtils.EXIT_APP)){ LogUtils.e("zm","正在退出登陆清请稍后开车中滴滴滴滴....."); finish(); } } } >
第二种
大家都知道 Android 的 Activity 是存着历史栈的,比如从 A -> B -> C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程序就自然退出了。 当然在 finish 的同时也需要是否自己程序的其他资源。所以需要想个办法把 Activity 给存起来。然后在程序退出的地方调用它们的 finish()方法。
使用全局变量。对了,第一个想到的就是继承 Application
public class MyApplication extends Application { private
List activities = new ArrayList();
public void addActivity(Activity activity) { activities.add(activity); } @Override public void onTerminate() { super.onTerminate(); for (Activity activity : activities) { activity.finish(); } onDestroy(); System.exit(0); } }
activity onCreate 的时候来调用 addActivity (),有人可能想到这个Application需要在所有的 Activity onCreate的时候都使用,需要做一个单例实例。其实根本不需要。在 Activity 中使this.getApplication() 就可以了。
最后在你需要推出程序的地方调用 application.onTerminate() 就可以了。记住:super.onTerminate() 必须调用,代码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。
运行以上代码后,在LogCat 中会出现一行提示:
android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); ActivityManager manager = (ActivityManager)
getSystemService(ACTIVITY_SERVICE);
manager.killBackgroundProcesses(getPackageName());种方式都能达到同样的效果,但是在模拟器上都会弹出 Unfortunately , XXX has stopped
消息提示框,但确实能退出应用。部分真机直接失效,所以是不靠谱的。
懒人专用:
private boolean mIsExit; @Override /** * 双击返回键退出 */ public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (mIsExit) { this.finish(); } else { Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show(); mIsExit = true; new Handler().postDelayed(new Runnable() { @Override public void run() { mIsExit = false; } }, 2000); } return true; } return super.onKeyDown(keyCode, event); }
相关文章推荐
- 关于解决微博登录在手机端无法实现及微博退出时FC的问题
- Android应用退出登录的实现
- 利用信鸽推送实现Android登录后强制退出的功能(单点登录)
- 关于通过发送广播实现当前账号退出登录功能时需要注意的一些
- 关于使用微信登录第三方APP的实现(Android版)
- Android中实现程序的完全退出登录
- 关于Android直播那些小事-推流1
- Android 关于长按back键退出应用程序的实现
- 关于使用微信登录第三方APP的实现(Android版)
- 利用信鸽推送实现Android登录后强制退出的功能(单点登录)
- Android应用退出登录的实现方法
- 关于Android直播那些小事-推流2完结
- 关于使用微信登录第三方APP的实现(Android版)
- 关于使用微信登录第三方APP的实现(Android版)
- Android 关于长按back键退出应用程序的实现
- Android 关于长按back键退出应用程序的实现
- 关于Android退出程序清空私密文件的那些事
- 关于ucenter实现同步登录的机制
- Android 实现一个http 带参数登录
- android多activity退出整个程序的一个实现