android双击返回键退出为什么又重新启动

android双击返回键退出为什么又重新启动,第1张

一、实现思路:

用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态。定时器是每次用户按下返回键才去创建。

二、功能代码:

?

/**

* 菜单、返回键响应

*/

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

if(keyCode == KeyEvent.KEYCODE_BACK)

{

exitBy2Click()//调用双击退出函数

}

return false

}

/**

* 双击退出函数

*/

private static Boolean isExit = false

private void exitBy2Click() {

Timer tExit = null

if (isExit == false) {

isExit = true// 准备退出

Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show()

tExit = new Timer()

tExit.schedule(new TimerTask() {

@Override

public void run() {

isExit = false// 取消退出

}

}, 2000)// 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务

} else {

finish()

System.exit(0)

}

}

需要使用BroadcastReceiver 广播接收者,注册HOME广播。

创建广播接收者

public class HomeReceiver extends BroadcastReceiver {

public void onReceive(Context context,Intent intent){  

}

}

2.注册广播

<receiver android:name="com.xxx.xxx.HomeReceiver" >

<intent-filter>

  <action android:name="android.intent.action.CLOSE_SYSTEM_DIALOGS" />

</intent-filter>

</receiver>

3.退出程序

int pid = android.os.Process.myPid() //获取当前应用程序的PID

android.os.Process.killProcess(pid) //结束当前进程

原理就是计算两次按下的时间间隔,数值你可以自己设定,间隔小于定的数值则认为是连续按下的两次,此时退出

private long mExitTime

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

if ((System.currentTimeMillis() - mExitTime) >800) {

Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show()

mExitTime = System.currentTimeMillis()

} else {

finish()

}

return true

}

return super.onKeyDown(keyCode, event)

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11117595.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存