android检测退出
程序员文章站
2022-04-04 16:49:14
...
一些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,就执行退出操作.
上一篇: java当中的定时器的4种使用方式
下一篇: 转:定时器设计