moveTaskToBack(true);退到后台后再打开app无效,app继续走启动的activity走

1,设置去监听后退的按键方法
 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
        boolean taskRoot = isTaskRoot();
        Log.d("myapp", taskRoot + "");
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() ==KeyEvent.ACTION_DOWN) {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(getApplicationContext(), "再按一次退出到后台", Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
//                finish();
//                System.exit(0);
                appContext.isbackup=true;//用个全局变量设置个标志,第二步去使用
                boolean b = moveTaskToBack(true);//退出到后台,这个方法可能会失效
                Log.d("myapp",b+"");
//                Intent intent = new Intent(Intent.ACTION_MAIN);
//                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//                intent.addCategory(Intent.CATEGORY_HOME);
//                startActivity(intent);
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

2,再App的启动页面

       boolean taskRoot = isTaskRoot();
//        if (!this.isTaskRoot()) {//这个方法再某些手机上可能无效,永远返回ture,把这个方法用个变量代替,用下面一行的全局变量代替
        if (application.isbackup == true) {
            Intent mainIntent = getIntent();
            String action = mainIntent.getAction();
            if (mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
                finish();
                return;
            }
        }
//        }

猜你喜欢

转载自blog.csdn.net/qq_26467207/article/details/131699980