zoukankan      html  css  js  c++  java
  • 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; 
        } 
    } 

  • 相关阅读:
    【转载】#349
    【转载】#346
    【转载】#344
    【转载】#336
    【转载】#335
    【转载】#330
    【转载】#324
    win2008远程桌面卡顿和上传慢的解决方法
    sql2005导出数据字典
    第03组 Alpha冲刺 (6/6)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5099797.html
Copyright © 2011-2022 走看看