检测当前应用的运行状态的几个方法

有些操作的前提是需要知道当前的APP的状态才能进行,比如说从通知栏跳到某个界面,如果要进入的界面已经在前端了,还要去把它删除再跳,这个时候用户会看到这个界面有明显的跳动,体验会很差。

很简单的几个方法,就可以判断出来应用的各个UI是否在前端,直接上代码。

//获取运行中的task列表public static ActivityManager.RunningTaskInfo getTopTask(Context context) {
        ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> tasks = mActivityManager.getRunningTasks(1);
        if (tasks != null && !tasks.isEmpty()) {
            return tasks.get(0);
        }
        return null;
    }

    /**
     * 判断目标页面是否运行在前端
     * @param topTask
     * @param packageName
     * @param activityName
     * @return
     */
    public static boolean isTopActivity(
            ActivityManager.RunningTaskInfo topTask,
            String packageName,
            String activityName) {
        if (topTask != null) {
            ComponentName topActivity = topTask.topActivity;

            if (topActivity.getPackageName().equals(packageName) &&
                    topActivity.getClassName().equals(activityName)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 判断应用当前是否运行中,包括后台运行
     * @param context
     * @return
     */
    public static boolean isApplicationRunning(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> taskList = am.getRunningTasks(Integer.MAX_VALUE);
        for (ActivityManager.RunningTaskInfo runningTaskInfo : taskList) {
            if (runningTaskInfo.topActivity.getPackageName().equals(context.getPackageName())) {
                return true;
            }
        }
        return false;
    }
时间: 2024-11-05 12:13:02

检测当前应用的运行状态的几个方法的相关文章

OpenCV运动目标检测——帧间差,混合高斯模型方法

一.简单的帧间差方法 帧差法是在连续的图像序列中两个或三个相邻帧间采用基于像素的时间差分并且闽值化来提取图像中的运动区域. 代码: int _tmain(int argc, _TCHAR* argv[]) { VideoCapture capture("bike.avi"); if(!capture.isOpened()) return -1; double rate = capture.get(CV_CAP_PROP_FPS); int delay = 1000/rate; Mat

检测php网站是否已经被攻破的方法

原文地址:http://drops.wooyun.org/web/2718                     分类:web安全(这篇文章的侧重点是利用系统命令)一.查看访问日志看是否有文件上传操作(POST方法), [plain] view plain copy IPREMOVED - - [01/Mar/2013:06:16:48 -0600] "POST/uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-&quo

js如何检测打开窗口是否存在的三个方法?

js打开窗口一般也就是使用window.open方法: win = window.open(CHILD_WINDOW_URL, CHILD_WINDOW_NAME, CHILD_WINDOW_ATTRS); 然后父窗口可以通过win 取得子窗口的引用,然后就可以检测 win是否定义和win.closed来检测窗口是否打开. 但是如果刷新父窗口,父窗口就会失去这些引用,那么我们如何再次检测子窗口是否存在?我想大概有以下方法: 方法一 使用cookie 打开子窗口的时候,子窗口或者父窗口可以写一个c

安全运维之:Linux后门入侵检测工具,附最新bash漏洞解决方法

一.rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马.rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录到系统. rootkit主要有两种类型:文件级别和内核级别,下面分别进行简单介绍. 1.文件级别rootkit 文件级别的rootkit一般是通

javascript检测基本类型值或引用类型值的类型方法

首先javascript的数据类型分为两种数据类型:基本数据数据类型和引用数据类型 基本数据类型:Number,String,Boolean,Undefined,Null.原始值,是简单的数据段,可按值访问,直接操作保存在变量中的实际值 引用数据类型:Object,Array,Function,Date,RegExp,单体内置对象(Math,window(客户端才有的全局对象),global(服务端才有的全局对象)).引用值,是保存在栈内存中的对象,是有多个值构成的对象,与其他语言不同的是:你不

检测一个点, 是否在一个半圆之内的方法

demo: http://jsbin.com/lihiwigaso   需求: 一个圆分成分部分, 鼠标滑上不同的区域显示不同的颜色 思路: 先判断这个点是否在圆之内, 再判断是否在所在的三角形之内就可以了 所需要的全部源码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width

vscode中检测代码中的空白行并去除的方法【转】

按下ctrl+h键进行正则匹配:^\s*(?=\r?$)\n 然后直接替换,再看代码发现空行已经不见了. 原文地址:https://www.cnblogs.com/micenote/p/9414474.html

oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法

之前在调试存储过程时,出现卡死情况,无法插入数据 解决方法 1.查看那些表被锁住: --1.查看那些表被锁住--- select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id; 2.查看引起死锁的会话: --3.查看引起死锁会话-- select b.username,b.sid,b.serial#,logo

Android开发检测App从后台进入前台的解决方法

public class ActLifecycle implements ActivityLifecycleCallbacks { private int mPreActivityStartedCount = 0; private int mActivityStartedCount = 0; private int mActivityOrientation = Configuration.ORIENTATION_UNDEFINED; @Override public void onActivit