Android双击退出
16lz
2022-07-06
思路:监听手机上的返回键,点击第一下记录,2s内点击第二下则退出,否则调用handler还原第一次点击的标志位
1 配置权限
2 onKey中调用
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
import android.app.Activity;import android.app.ActivityManager;import android.content.Context;import android.os.Handler;import android.os.Looper;import android.view.KeyEvent;import android.widget.Toast;public class DoubleClickExitHelper {private final Activity mActivity;private boolean isOnKeyBacking;private Handler mHandler;private Toast mBackToast;public DoubleClickExitHelper(Activity activity) {mActivity = activity;mHandler = new Handler(Looper.getMainLooper());}/** * Activity onKeyDown事件 * */public boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode != KeyEvent.KEYCODE_BACK) {return false;}if(isOnKeyBacking) {mHandler.removeCallbacks(onBackTimeRunnable);if(mBackToast != null){mBackToast.cancel();}// 退出//AppManager.getAppManager().AppExit(mActivity);//mActivity.finish();AppExit(mActivity);return true;} else {isOnKeyBacking = true;if(mBackToast == null) {mBackToast = Toast.makeText(mActivity, "再按一次退出应用", 2000);}mBackToast.show();mHandler.postDelayed(onBackTimeRunnable, 2000);return true;}}private Runnable onBackTimeRunnable = new Runnable() {@Overridepublic void run() {isOnKeyBacking = false;if(mBackToast != null){mBackToast.cancel();}}};/** * 退出应用程序 */public void AppExit(Context context) {try {ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityMgr.restartPackage(context.getPackageName());System.exit(0);} catch (Exception e) {}}}
更多相关文章
- Android(安卓)Activity界面切换添加动画特效
- Android(安卓)环境搭建
- android studio调试c/c++代码
- Android(安卓)Wifi模块分析(三)
- Android中dispatchDraw分析
- Android四大基本组件介绍与生命周期
- 在Fragment中设置控件点击方法,执行失败。
- Android(安卓)Service AIDL
- Android调用天气预报的WebService简单例子