两次点击返回键退出应用
2016-01-21 13:02
288 查看
我的APP首页是一个H5登录页面,用的WebView,登录之后进入个人首页,登录后在个人首页按返回键时会返回到WebView的登录页面,不能直接退出应用,我想登录后在个人首页点击返回键后直接退出应用。个人分析是Activity栈的原因。WebViewActivity在下面,IndexPageActivity在上面。
转载自:http://blog.csdn.net/sunnyfans/article/details/7688092
上面链接中的方法完美解决了我的问题,感谢!
1. 在项目中键一个SysApplication类,内容如下
2. 然后在每个Activity的onCreate()方法中添加
SysApplication.getInstance().addActivity(this);
具体如下:
我在应用中还使用了点击两次退出,
转载自:http://www.open-open.com/lib/view/open1392186781082.html
具体实现如下:
把另一种退出方式也摘录上,方便查找
转载自:http://blog.csdn.net/sunnyfans/article/details/7688092
上面链接中的方法完美解决了我的问题,感谢!
1. 在项目中键一个SysApplication类,内容如下
import java.util.LinkedList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Application; import android.content.DialogInterface; import android.content.Intent; public class SysApplication extends Application { private List<Activity> mList = new LinkedList<Activity>(); private static SysApplication instance; private SysApplication() { } public synchronized static SysApplication getInstance() { if (null == instance) { instance = new SysApplication(); } return instance; } // add Activity public void addActivity(Activity activity) { mList.add(activity); } public void exit() { try { for (Activity activity : mList) { if (activity != null) activity.finish(); } } catch (Exception e) { e.printStackTrace(); } finally { System.exit(0); } } public void onLowMemory() { super.onLowMemory(); System.gc(); } }
2. 然后在每个Activity的onCreate()方法中添加
SysApplication.getInstance().addActivity(this);
具体如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SysApplication.getInstance().addActivity(this); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_webview); webView = (WebView) findViewById(R.id.webView); ...... Intent intent = getIntent(); String url = intent.getStringExtra("url"); webView.loadUrl(url); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SysApplication.getInstance().addActivity(this); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_index_page); initView(); updateView(); }在需要退出的地方调用
SysApplication.getInstance().exit();
我在应用中还使用了点击两次退出,
转载自:http://www.open-open.com/lib/view/open1392186781082.html
具体实现如下:
// 定义一个变量,来标识是否退出 private static boolean isExit = false; private static Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExit = false; } }; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); return true; } return super.onKeyDown(keyCode, event); } private void exit() { if (!isExit) { isExit = true; Toast.makeText(getApplicationContext(), "再按一次后退键退出程序", Toast.LENGTH_SHORT).show(); // 利用handler延迟发送更改状态信息 mHandler.sendEmptyMessageDelayed(0, 2000); } else { Log.e(TAG, "exit application"); SysApplication.getInstance().exit(); } }
把另一种退出方式也摘录上,方便查找
package com.example.clickexittest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.widget.Toast; public class MainActivity extends Activity { private static final String TAG = MainActivity.class.getSimpleName(); private long clickTime = 0; //记录第一次点击的时间 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); return true; } return super.onKeyDown(keyCode, event); } private void exit() { if ((System.currentTimeMillis() - clickTime) > 2000) { Toast.makeText(getApplicationContext(), "再按一次后退键退出程序", Toast.LENGTH_SHORT).show(); clickTime = System.currentTimeMillis(); } else { Log.e(TAG, "exit application"); this.finish(); // System.exit(0); } } }
相关文章推荐
- git 命令(1)
- AlertDialog对话框的几种样式
- 网络
- 返回类的内部数据带来的问题
- ios remote control
- 映射表操作中的常用数组
- shell按行处理文件
- core graphics path
- hdu 2571 命运(dp)
- javascript函数的声明,及返回值
- uva 10994 - Simple Addition
- BZOJ 1491: [NOI2007]社交网络( floyd )
- 欢迎使用CSDN-markdown编辑器
- Android系统架构
- linux 批量删除 svn文件
- 【常用工具类】SharedPreferences封装类SPUtils
- oracle自动添加数据文件
- SQLServer2008 突然用不了搜索文本了,就是Ctrl+F这个功能
- 清华梦的粉碎—写给清华大学的退学申请(转自王垠Blog)
- jenkins+git+android studio自动化构建(持续集成)