android检测退出
16lz
2021-01-23
一些Android应用退出的时候,要按两次back按键,一直很好奇,总算是发现怎么实现的了。
实现代码:
package com.example.com.cb.test;import java.util.Timer;import java.util.TimerTask;import android.os.Bundle;import android.app.Activity;import android.view.KeyEvent;import android.view.Menu;import android.widget.Toast;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}// 是否退出程序private static Boolean isExit = false;// 定时触发器private static Timer tExit = null;// 鼠标按键释放@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (keyCode == KeyEvent.KEYCODE_BACK) {if (isExit == false) {isExit = true;if (tExit != null) {tExit.cancel();}// 重新实例一个定时器tExit = new Timer();TimerTask task = new TimerTask() {@Overridepublic void run() {// TODO Auto-generated method stubisExit = false;}};Toast.makeText(this, "在按一次退出程序", Toast.LENGTH_SHORT).show();// 延时两秒触发task任务tExit.schedule(task, 2000);} else {finish();System.exit(0);}return true;}return super.onKeyUp(keyCode, event);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
实现具体:
看代码很明显就是对Timer这个类的使用.
Timer类说明:
cancel()方法:
schedule:
执行流程:
当你按下back按键后,Toast一下,然后会在当前时间+delay后启动task任务,当启动task任务后,isExit依然是false,是不能退出的,不启动task任务,isExit是true,
在按下一back按键后,由于isExit是true,就执行退出操作.
更多相关文章
- Android 如何在代码中将PX转换成DIP
- Android——常用代码段积累(一)
- android 使用imageloader 获取图片时,如果需要带cookie
- android 图片叠加效果——两种方法
- Android TabHost 文字及图片的设置
- android调用系统邮件发送图片文本
- android之【代码实现ImageView图片切换】
- Android 图像系列: 将本地图片加载到Drawable