程序从后台吊起 代码
private void recovery(Context context) { ActivityManager manager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> task_info = manager .getRunningTasks(20); String className = ""; for (int i = 0; i < task_info.size(); i++) { if ("packgeName".equals(task_info .get(i).topActivity.getPackageName())) { manager.moveTaskToFront(task_info.get(i).id,ActivityManager.MOVE_TASK_WITH_HOME);//关键 className = task_info.get(i).topActivity .getClassName(); intentgo = new Intent(); intentgo.setAction(Intent.ACTION_MAIN); intentgo.addCategory(Intent.CATEGORY_LAUNCHER); try { intentgo.setComponent(new ComponentName(context, Class.forName(className)));// } catch (ClassNotFoundException e) { e.printStackTrace(); } intentgo.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); context.startActivity(intentgo); } } } 我遇到的问题: 1.当你程序到 后台,然后执行程序是可以吊起的 2.当你程序在后台,然后点击了其他应用也放在后台(最后点击的不是自己的程序时候), 有些手机,即使以上代码你标注了跳转的 包名,类名不会吊起,吊起的是你最后一次打开,放到后台的程序。 然后跟了一下以上代码明明没有问题,执行下来的获取的className 也是自己的类名,为什么不行呢? 结果发现,你程序的TASK 在最后打开应用的TASK 下边,所以打开的是最上层的TASK,最后用过manager.moveTaskToFront(task_info.get(i).id,ActivityManager.MOVE_TASK_WITH_HOME) 才可以。