Android слушать запуск приложения - PullRequest
5 голосов
/ 29 сентября 2011

Мне нужно разработать сервис, который будет слушать каждое начало активности.Должен ли я сделать что-то вроде этого?

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (int i = 0; i < runningAppProcessInfo.size(); i++) {
    Log.v("Proc: ", runningAppProcessInfo.get(i).processName);
}

И нужно ли это делать каждые X секунд?Влияет ли это на расход батареи?

Ответы [ 2 ]

2 голосов
/ 30 мая 2013

Насколько я знаю, в пакете android.app есть класс IActivityController.Stub.Но это интерфейс {@hide} (как кто-то сказал, что есть какой-то метод для доступа к @hide api).

Мы можем настроить прослушиватель на переключение Activity для прослушивания следующим образом:

mAm = ActivityManagerNative.getDefault();          
    try {
        mAm.setActivityController(new ActivityController());

   } catch (RemoteException e) {
        System.err.println("** Failed talking with activity manager!");}

и класс ActivityManagerNative также является @hide.ActivityController - это класс, расширяющий IActivityController.Stub.

Как получить доступ к @hide Api:

  1. Вы можете получить исходный код Android для создания Android-файла have- @ hide-api.использовать.
  2. по отражению.
1 голос
/ 28 ноября 2011

Насколько я знаю, в настоящее время нет возможности прослушать запуск приложения, если только оно не запускается впервые. ACTION_PACKAGE_FIRST_LAUNCH (Broadcast Action: Отправляется в установочный пакет приложения при первом запуске этого приложения (то есть при первом выходе из состояния остановки).

Так что я думаю, что ваше решение является лучшим для этого прямо сейчас.

...