public void doWork(Context context) { AIDSDBHelper aidsDBHelper = AIDSDBHelper.getInstance(context); Calendar calendar = Calendar.getInstance(); long currentTimeMillis = calendar.getTimeInMillis(); Calendar prevCalendar = Calendar.getInstance(); prevCalendar.add(Calendar.SECOND, -1 * RunEvery); long prevTimeMillis = prevCalendar.getTimeInMillis(); aidsDBHelper.insertLog( String.format("Running GAnalyzer for %s-%s", calendar.toString(), prevCalendar.toString())); String gModelName = "_global" + calendar.get(Calendar.HOUR_OF_DAY); // get global model IEModel gModel = aidsDBHelper.getIEModel(gModelName); if (gModel == null) { // first invocation gModel = new IEModel(); gModel.ProcessName = gModelName; gModel.FromTimeStamp = prevTimeMillis; gModel.ToTimeStamp = currentTimeMillis; gModel.Age = 1; aidsDBHelper.insertIEModel(gModel); } // get IEModels of processes for past hour HashMap<String, IEModel> processMap = getIEModelsForProcesses(aidsDBHelper, prevTimeMillis, currentTimeMillis); for (String pName : processMap.keySet()) { IEModel newModel = processMap.get(pName); // update the model with current generation gModel.ToTimeStamp = currentTimeMillis; gModel.CPULow += newModel.CPULow; gModel.CPUMid += newModel.CPUMid; gModel.CPUHigh += newModel.CPUHigh; gModel.CPUCounter += newModel.CPUCounter; gModel.Age = gModel.Age + 1; // and increment the age aidsDBHelper.updateIEModel(gModel); } }