我需要开发一个服务来监听每个活动的开始。 我必须做这样的事吗?
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秒做一次吗?它会影响电池消耗吗?
答案 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 :(得分:1)
据我所知,目前无法收听应用程序的启动,除非它是第一次启动。 ACTION_PACKAGE_FIRST_LAUNCH(广播操作:首次启动该应用程序时发送到应用程序的安装程序包(这是第一次移出停止状态)。
所以我想你现在的解决方案是最好的。