Android“再按一次退出程序”的具体实现

Android应用中许多退出程序的方式都是在你点击了返回按钮的时候,它弹出一个信息“再按一次退出”,这个和时候我们只需要在按一次返回按钮,程序就退出了,有的 时候时间间隔是3秒或者其他的时间间隔,今天我就简单说一下实现原理。

其实实现还是比较简单的,我们需要在Activity中覆盖一个方法:public void onBackPressed();这个方法在返回键被点击的时候调用,覆盖这个方法之后我们重写它的实现:

<span style="white-space:pre">	</span>private static long back_pressed = 0;
	@Override
	public void onBackPressed() {
		if(back_pressed+2000>System.currentTimeMillis())
			super.onBackPressed();
		else {
			Toast.makeText(this, "再按一次退出", 1000).show();
			back_pressed = System.currentTimeMillis();
		}
	}

我们还需要定义一个静态变量如代码中所示,用来记录我们点击按钮的时间,从代码中我们可以知道,当我们点击了按钮之后,我们先判断当前back_pressed+2000的值是否大于当前系统时间,如果大于,则我们就退出程序,如果不大于,也就是说,在我们点击了返回按钮之后,在2秒的间隔之内我们没有再点击第二次,所以程序就没有退出,而是记录此次点击的时间,为下一次点击做判断准备。

时间: 2024-11-07 13:11:04

Android“再按一次退出程序”的具体实现的相关文章

Android开发之”再按一次退出程序“的实现

现在移动客户端退出程序对话框退出越来越不流行了,都开始使用连续按两次来退出,即著名的“再按一次退出程序”模式.现在就看看怎么实现的吧. @SuppressLint("HandlerLeak") Handler handler = new Handler(){ public void handleMessage(Message msg){ switch (msg.what) { } } }; boolean willExit = false; @Override public void

Android:再按一次退出程序

感觉这种效果比较友好 //两秒内按返回键两次退出程序 private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) >

Android中点击物理返回按键(再按一次退出程序)

private long exitTime = 0; @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(getA

再按一次退出程序

在android程序应用中常常会遇到点击返回键时提示再按一次退出程序. 要实现这个功能须要完毕两点: 一.可以彻底退出程序 ·之前看到有人用 finish();,事实上这样做并不能真的退出程序,这样仅仅是结束当前的Activity,一个程序中是能够有多个Activity的,在android能够彻底关闭进程的方法有好几种. 第一种: // 获取当前进程的id int pid = android.os.Process.myPid(); android.os.Process.killProcess(p

Android 监听返回键退出程序的两种实现

1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定时器是每次用户按下返回键才去创建. 代码如下: /** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyC

【Android】System.exit(0) 退出程序

许多 Android 应用程序都是连续点击两下返回键时退出程序,代码如下: private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-ex

Android 再多图片也不会出现OOM

照片墙这种功能现在应该算是挺常见了,在很多应用中你都可以经常看到照片墙的身影.它的设计思路其实也非常简单,用一个GridView控件当作“墙”,然后随着GridView的滚动将一张张照片贴在“墙”上,这些照片可以是手机本地中存储的,也可以是从网上下载的.制作类似于这种的功能的应用,有一个非常重要的问题需要考虑,就是图片资源何时应该释放.因为随着GridView的滚动,加载的图片可能会越来越多,如果没有一种合理的机制对图片进行释放,那么当图片达到一定上限时,程序就必然会崩溃. 今天我们照片墙应用的

Android再按一次退出

private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(get

Android 再谈handler

今天在做http网络事件的响应网络接收处理一般不能放在主线程中使用,目前也只会使用AsyncTask进行处理!之前虽然写过handler处理的一些文章但是发现全不会了!无奈~ 关于handler某位兄弟已经整理的很透彻了!现在引用下原话如下: Handler监听者框架:子线程是事件源,主线程是监听者.Handler作为子线程的监听器出现:主线程中生成Handler的子类,并重写handleMessage(Message msg) 方法,用来对子线程响应.子线程调用Hanlder的sendMess