【问题标题】:How to detect the state of an app other than mine?如何检测我以外的应用程序的状态?
【发布时间】:2012-12-03 16:10:16
【问题描述】:

我环顾四周,但所有建议都是为了检查我自己的应用程序/活动的状态。 使用生命周期。 我需要检查另一个应用程序是否在前台/在后台运行/暂停。 可能吗。根据应用程序的状态,我需要更改我的进一步操作。

【问题讨论】:

  • 我可以知道你为什么要这样做吗?你会做什么?
  • @kumaand 我有一个广播接收器,可以跟踪传入的短信,并对数据库进行更新。如果应用程序在前台,我还需要更新应用程序的 GUI。
  • 从广播接收器发送通知,从通知发送待处理的意图并更新 UI
  • @kumaand 那只会让用户调用更新,我从上面 Ali Imran 的建议中找到了一个 diff 方法。我现在将其发布为答案。

标签: android application-state


【解决方案1】:
ActivityManager acm=(ActivityManager) getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = acm.getRunningTasks(1); 
taskInfo.get(0).topActivity.getClassName();
ComponentName componentInfo = taskInfo.get(0).topActivity;
String packageName=componentInfo.getPackageName();

我使用活动管理器查找顶部包/活动,如果这符合我向应用程序发送广播的要求,该应用程序将更新数据库中的信息。这可以通过使用 onResume 中的代码注册广播接收器并在 OnPause 中取消注册来简单地完成。 所以检查 Top 包就变成了双重检查。

【讨论】:

  • 谢谢,我刚刚在我的服务中添加了一个 for 循环并检查了所有正在运行的应用程序,如果包名存在于列表中,则应用程序正在运行,我用它来显示通知,如果如果应用程序正在运行,应用程序将关闭或浮动窗口....再次感谢
猜你喜欢
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 2011-06-05
  • 2011-12-25
  • 2016-11-12
  • 1970-01-01
相关资源
最近更新 更多