<pre name="code" class="java">1、必须添加权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
/**
*
* @Description: TODO 判断activity是否在应用的最顶层
* @param context 上下文
* @param intent intent携带activity
* @return boolean true为在最顶层,false为否
* @author Sunday
* @date 2016年3月15日
*/
public static boolean isTop(Context context, Intent intent) {
ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
List<RunningTaskInfo> appTask = am.getRunningTasks(1);
if (appTask.size() > 0 && appTask.get(0).topActivity.equals(intent.getComponent())) {
return true;
} else {
return false;
}
}
/**
*
* @Description: TODO 判断应用是否在运行
* @param context 上下文
* @param intent intent携带activity
* @return boolean true为在运行,false为已结束
* @author Sunday
* @date 2016年3月15日
*/
public static boolean isRuning(Context context, Intent intent) {
ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (tasks.size() > 0 && tasks.get(0).baseActivity.equals(intent.getComponent())) {
return true;
} else {
return false;
}
}
3、调用示例
Intent intent = new Intent(context, MainActivity.class);
if(UtilsHelp.isTop(context, intent)){
MainActivity.switchPage(1);
Log.e("RunningTaskInfo", "直接跳入");
}else{
intent.putExtra("message", "message");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
context.startActivity(intent);
Log.e("RunningTaskInfo", "重启应用");
}