在Android中获取运行应用程序处理时间

时间:2015-07-20 02:14:47

标签: android process

我试图找出核心在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();
        }

0 个答案:

没有答案