• Android推断程序前后台状态


    public class AppStatusService extends Service { 
        private static final String TAG = "AppStatusService"; 
        private ActivityManager activityManager; 
        private String packageName; 
     
        @Override 
        public IBinder onBind(Intent intent) { 
            return null; 
        } 
     
        @Override 
        public int onStartCommand(Intent intent, int flags, int startId) { 
            activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); 
            packageName = this.getPackageName(); 
            new Thread() { 
                public void run() { 
                    try { 
                        while (true) { 
                            Thread.sleep(1000); 
                            if (isAppOnForeground()) { 
                                Log.i(TAG, "true"); 
                            } else { 
                                Log.i(TAG, "false"); 
                            } 
                        } 
                    } catch (Exception e) { 
                        e.printStackTrace(); 
                    } 
                } 
            }.start(); 
            return super.onStartCommand(intent, flags, startId); 
        } 
     
        private boolean isAppOnForeground() { 
            // Returns a list of application processes that are running on the device 
            List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); 
            if (appProcesses == null) return false; 
            for (RunningAppProcessInfo appProcess : appProcesses) { 
                // importance: 
                // The relative importance level that the system places  
                // on this process. 
                // May be one of IMPORTANCE_FOREGROUND, IMPORTANCE_VISIBLE,  
                // IMPORTANCE_SERVICE, IMPORTANCE_BACKGROUND, or IMPORTANCE_EMPTY. 
                // These constants are numbered so that "more important" values are 
                // always smaller than "less important" values. 
                // processName: 
                // The name of the process that this object is associated with. 
                if (appProcess.processName.equals(packageName) 
                        && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
                    return true; 
                } 
            } 
            return false; 
        } 
    } 

  • 相关阅读:
    WINCE串口打印信息的屏蔽与打开
    WINCE系统时间设置
    WINCE调试常见错误
    今天开始研究arcgisserver
    今天开始,放弃项目管理,做技术了
    java数据库连接
    [转]建一个XMLHttpRequest对象池
    Linux下jsp开发环境,apache,tomcat服务器配置过程
    div+css布局漫谈
    新图纸总结
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5099797.html
Copyright © 2020-2023  润新知