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


    有些操作的前提是需要知道当前的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; }
  • 相关阅读:
    [Leetcode] Set Matrix Zeroes
    [Leetcode] Longest Valid Parentheses
    [Leetcode] Interleaving String
    [Leetcode] Surrounded Regions
    [Leetcode] Candy
    用Delphi获取当前系统时间
    Delphi窗体中禁用最大化按钮
    DELPHI关于文件的操作
    Delphi 2010初体验,是时候抛弃Delphi 7了
    双通道内存有什么优点和缺点?
  • 原文地址:https://www.cnblogs.com/lovemo1314/p/5644690.html
Copyright © 2020-2023  润新知