Я пытаюсь получить загрузку процессора различными процессами (тики процессора) из фонового приложения, работающего на iOS4 с использованием Apple SDK. Это делается полностью с согласия пользователей, поэтому здесь нет ничего неэтичного.
Я использовал sysctl для получения списка процессов, но тики процессора для процесса всегда возвращаются как 0 с устройства. В качестве альтернативы я пытался искать процесс переднего плана и опрашивать каждые несколько секунд, чтобы таким образом использовать приложение. Тем не менее, отсутствует API / флаг, который указывает, выполняется ли процесс на переднем плане или в фоновом режиме. Я проверил событие на предмет потребления памяти процессом и выяснил, запущен ли он в фоновом режиме (память не будет колебаться, если в фоновом режиме). Однако API proc_pidinfo является закрытым, и Apple отклонила приложение.
Я видел сообщения, связанные с такими темами, но не получил однозначного ответа.
Я знаю, что песочница не позволит получить информацию о других приложениях (что, кстати, не соответствует действительности, поскольку sysctl выдает PID, имена процессов и время запуска). Тем не менее, я увидел приложение в магазине приложений под названием MyLife от Zokem, и они сообщают такую информацию. Они с точностью до секунды. Мне было интересно, есть ли системный журнал или БД, в которой хранится эта информация.
У кого-нибудь есть идеи по получению времени использования приложений?