android监听应用程序启动

时间:2011-09-29 11:11:24

标签: android launch listen

我需要开发一个服务来监听每个活动的开始。 我必须做这样的事吗?

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 个答案:

答案 0 :(得分:2)

据我所知,IActivityController.Stub包中有一个类android.app。 但这是一个{@hide}接口(正如有人说有一些方法可以访问@hide api。)

我们可以将Listener设置为侦听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源代码来构建一个使用的@- hide-api Android.jar。
  2. 通过反思。

答案 1 :(得分:1)

据我所知,目前无法收听应用程序的启动,除非它是第一次启动。 ACTION_PACKAGE_FIRST_LAUNCH(广播操作:首次启动该应用程序时发送到应用程序的安装程序包(这是第一次移出停止状态)。

所以我想你现在的解决方案是最好的。