Android 中点击返回键弹出“在按一次退出程序”的做法
在很多应用中都有这种做法,连续点击两次才退出程序,目的是为了防止用户不小心点击到了返回键而退出程序了,添加了一次用户确认的过程。
其实做法很简单,只需要做一个延时的消息处理就可以了。
首先在我们在一个Activity中添加一个按钮,连续两次点击按钮时退出,连续两次点击返回键时也退出程序。
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 android:gravity="bottom|right" > 7 8 9 <Button 10 android:id="@+id/exit" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:text="退出应用"> 14 15 </Button> 16 </LinearLayout>
在代码中点击按钮时将标志位置为true,如果在两秒内点击,因为标致位为true,所以会退出应用,同时做一个延时2秒的消息处理,两秒后将标志位还原,就意味着两秒后点击和刚开始点击是一样的效果。
1 package com.alex.test; 2 3 import java.util.Timer; 4 import java.util.TimerTask; 5 6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.view.KeyEvent; 9 import android.view.View; 10 import android.view.View.OnClickListener; 11 import android.widget.Button; 12 import android.widget.Toast; 13 14 public class ExitTest extends Activity implements OnClickListener { 15 16 private Button mExitBtn; 17 private static boolean isExit = false; 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.exit); 23 initView(); 24 } 25 26 private void initView() { 27 mExitBtn = (Button) findViewById(R.id.exit); 28 mExitBtn.setOnClickListener(this); 29 } 30 31 @Override 32 public void onClick(View v) { 33 switch (v.getId()) { 34 case R.id.exit: 35 exit(); 36 break; 37 38 default: 39 break; 40 } 41 } 42 43 private void exit() { 44 if(!isExit) { 45 isExit = true; 46 Toast.makeText(this, "在按一次退出程序", Toast.LENGTH_SHORT).show(); 47 new Timer().schedule(new TimerTask() { 48 49 @Override 50 public void run() { 51 isExit = false; 52 } 53 }, 2000); 54 } else { 55 finish(); 56 } 57 } 58 59 @Override 60 public boolean onKeyDown(int keyCode, KeyEvent event) { 61 if(keyCode == KeyEvent.KEYCODE_BACK) { 62 exit(); 63 } 64 return false; 65 } 66 }
点击返回键和点击按钮都会看到在按一次退出程序的toast,在两秒内在点一次程序会退出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述