判断app是否有activity
发布网友
发布时间:2022-04-25 20:45
我来回答
共1个回答
热心网友
时间:2022-06-17 06:30
[java] view plain copy
<pre name="code" class="java">1、必须添加权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
[java] view plain copy
/**
*
* @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;
}
}
[java] view plain copy
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", "重启应用");
}