当前位置: 首页 > 面试题库 >

Android如何知道某个应用已启动,并根据启动时间确定应用优先级

姜俊民
2023-03-14
问题内容

在Android中,人们如何知道某个应用已启动。我想检测启动时安装的所有应用,并根据其使用时间确定应用的优先级。有解决方案建议这样做吗?

我知道使用广播,但是启动应用程序后,ActivityManager是否会发送一些Intent,以及如何在代码中检测到此Intent?也欢迎任何其他解决方案。


问题答案:

第一部分

如果您知道应用程序的程序包名称,请尝试以下操作( 将以下代码片段放入应用程序的onCreate方法中 ):

 ActivityManager am= (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);

然后,

 boolean exit = false;
 while(!exit)
 { 
      List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
      ComponentName componentInfo = taskInfo.get(0).topActivity;
     if(componentInfo.getPackageName().equals("Your package name"))
     {
      //Do your work here
      exit = true;
     }
 }

当您启动应用程序时,它将被放入 componentInfo中 。该 taskInfo.get(0).topActivity
将在前台返回的活动。因此,您可以通过使用第二个代码段比较程序包来知道您的应用已启动。

注意 :将第二个代码段放入 Asynctask中, 以便可以在 后台 检查应用程序是否已启动。

第二部分:

为了获得优先级,我认为您可以通过检查列表 TaskInfo 来实现,该列表将包含所有正在运行的应用程序。



 类似资料:
  • 我有一个Android应用程序。在启动屏幕的方法中,我添加了 因此,我希望在onCreate退出后100ms后执行该代码。 但我可以看到,我的应用程序在onCreate()之后花了3秒时间来执行延迟后的代码(在3秒之后还会出现UI): 有人能告诉我为什么一个应用程序可以在onCreate()之后花3秒来执行延迟后的代码和UI开始出现? 请建议我如何优化这一次的技巧? 还有一个问题,Handler.

  • 问题内容: 我有一个Java应用程序。 该应用程序具有一个设置,该设置决定该应用程序是否在启动时启动。 目前,我可以通过在“启动项目”文件夹中放置/删除快捷方式来实现此目的。 但是,我想知道是否有更好的方法来处理此行为。 编辑 是的,它是Windows。抱歉,之前没有清除该内容。 该应用程序具有一个用户可以在其中触发动作的UI,并且该应用程序在运行时会定期在后台运行一些任务。 @Peter,如何在

  • 我想在用户收到应用程序上的通知时自动启动应用程序。启动程序图标上不会有点击操作。

  • 本文向大家介绍Android App应用启动分析与优化,包括了Android App应用启动分析与优化的使用技巧和注意事项,需要的朋友参考一下 app的启动方式:  1.)冷启动  当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化Main

  • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

  • 问题内容: 我尝试使用范围类型APPLICATION和带有@ Create,@ Beg的方法来注释类,但这似乎不起作用。 我想要的是在应用程序启动时立即启动无限循环。 问题答案: 如果希望在初始化后立即执行方法,则可以使用以下注释: