Android双击退出
16lz
2021-01-23
思路:监听手机上的返回键,点击第一下记录,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应用程序获取系统权限【转】
- Eclipse开发Android应用程序入门:重装上阵
- android点滴(8) -- android应用程序的生命周期
- Android应用程序组件Content Provider的共享数据更新通知机制分
- Android 将自己的应用程序改成系统的应用程序
- android应用 小试牛刀 开发自己的应用程序就是这么简单