我试图找出核心在Android设备上运行的个人App进程已用时间。因此,该方法实现从它已检测到的proc.Id计算并记录Android设备中的各个应用程序运行的App进程所经过的时间。非常类似于Windows或Mac OS,活动管理器/任务管理器,它显示每个正在运行的程序的已用时间。
我尝试过从http://www.widecodes.com/0HxgXjkWXg/how-to-find-out-the-runningstart-time-of-android-application.html进行研究,但是在实施时,以下3个代码行'与Android Studio代码块集成时,功能过程似乎不正确:
final int tckName = Class.forName("libcore.io.OsConstants").getField("_SC_CLK_TCK").getInt(null);
final Object os = Class.forName("libcore.io.Libcore").getField("os").get(null);
final long tck = (Long)os.getClass().getMethod("sysconf", Integer.TYPE).invoke(os, tckName);
其次,我已经设法找到了#34; Sigar"可用于从unable to fetch process time using sigar获取处理时间,但是我无法将此功能实现到Android Studio中,因为它在Android Studio lib中不存在。
此外,我确实了解使用以下方法:
Process_startTime = System.nanoTime();
Process_endTime = System.nanoTime();
Process_elapsed = Process_endTime-Process_startTime;
此方法仅适用于整个App或System,我确实需要在android设备中获取个人运行App进程已用时间,因此我不认为上面的System.nanoTime()Timer方法是正确的方法这样做。
因此,我想请求您提供有关如何在Android中获取每个正在运行的应用进程的帮助。谢谢。
我已粘贴代码段供您阅读:
for (int i=0; i < runningProcesses.size(); i++) {
jsonArray.put(runningProcesses.get(i).processName);
try {
android.os.Process currentproc = new Process();
currentproc.getUidForName(runningProcesses.get(i).processName);
System.out.println("******RobotService.java: processName******"+ currentproc);
CurrentProcTime = getStartTime(runningProcesses.get(i).pid);
System.out.println("******RobotService.java: CurrentProcTime******"+ CurrentProcTime);
...
jsonArrayData.put(AppElapsedTime);
//System.out.println("runningProcesses:processName:>>" + runningProcesses.get(i).processName +" " + dt_hr + "<<");
jsonArrayData.put(AppElapsedTime);
} catch (IOException e) {
e.printStackTrace();
}catch (OutOfMemoryError e){
e.printStackTrace();
}