package com.quickblox.q_municate.utils;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import com.quickblox.q_municate.App;
import java.util.List;
public class SystemUtils {
public static boolean isAppRunningNow() {
ActivityManager activityManager = (ActivityManager) App.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
if (!runningTasks.isEmpty()) {
return runningTasks.get(0).topActivity.getPackageName().equalsIgnoreCase(App.getInstance().getPackageName());
} else {
return false;
}
}
public static Intent getPreviousIntent(Context context) {
ActivityManager activityManager = (ActivityManager) App.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
String ourPackageName = App.getInstance().getPackageName();
if (runningTasks != null) {
for (ActivityManager.RunningTaskInfo taskInfo : runningTasks) {
if (taskInfo.topActivity.getPackageName().equalsIgnoreCase(ourPackageName)) {
try {
Intent intent = new Intent(context, Class.forName(taskInfo.topActivity.getClassName()));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
return intent;
} catch (ClassNotFoundException e) {
// This should never happen
e.printStackTrace();
}
}
}
}
return null;
}
public static int getThreadPoolSize() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
return Runtime.getRuntime().availableProcessors();
} else {
// According to docs for Runtime.getRuntime().availableProcessors()
// before Android 4.2 "traditionally this returned the number currently online"
// There is really small amount of devices that have single core, so we're multiplying returned value on 2
// And hope a lot of running threads won't burn user's device, he-he
return Runtime.getRuntime().availableProcessors() * 2;
}
}
public static String getNameActivityOnTopStack(){
ActivityManager activityManager = (ActivityManager) App.getInstance().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
String ourPackageName = App.getInstance().getPackageName();
String topActivityName = null;
if (runningTasks != null) {
for (ActivityManager.RunningTaskInfo taskInfo : runningTasks) {
if (taskInfo.topActivity.getPackageName().equalsIgnoreCase(ourPackageName)) {
topActivityName = taskInfo.topActivity.getClassName();
}
}
}
return topActivityName;
}
}