android检测退出
程序员文章站
2022-06-08 19:18:19
...
一些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 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 是否退出程序
private static Boolean isExit = false;
// 定时触发器
private static Timer tExit = null;
// 鼠标按键释放
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (isExit == false) {
isExit = true;
if (tExit != null) {
tExit.cancel();
}
// 重新实例一个定时器
tExit = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
isExit = 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);
}
@Override
public 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,就执行退出操作.
下一篇: 大战2013之二:破解浴火银河2硬盘版
推荐阅读
-
SQL Server误区30日谈 第11天 镜像在检测到故障后瞬间就能故障转移
-
基于Android XML解析与保存的实现
-
Android仿微信Viewpager-Fragment惰性加载(lazy-loading)
-
Apple Watch中的应用怎么强行关闭退出?
-
关于Android SDCard存储的问题
-
Android ListView中动态添加RaidoButton的实例详解
-
Android单个RecyclerView实现列表嵌套的效果
-
基于Android 监听ContentProvider 中数据变化的相关介绍
-
基于Android SQLite的使用介绍
-
Android 新手入门体验