Android:如果Activity正在运行,请从服务进行测试。

时间:2012-11-16 08:33:43

标签: android service android-activity

我有一个在后台运行的服务。我希望它可以执行一个动作,只有当某个活动正在运行时。如何从服务中测试活动是否正在运行?

3 个答案:

答案 0 :(得分:2)

您可以使用程序包管理器和活动管理器:

PackageManager:用于检索与当前安装在设备上的应用程序包相关的各种信息的类。您可以通过getPackageManager().

找到此课程

ActivityManager:与系统中运行的整体活动互动。

但是,更简单的方法是:在启动Activity(onCreate / onResume)时,发送带有service.send(..)的消息或带有service.onStartCommand(..)的Intent,以便服务知道您的特定活动已经启动。

答案 1 :(得分:0)

也许你可以反过来做,从你的活动向服务发送意图。

例如,您可以发送活动onResume的意图,告诉您的服务活动是活动的,另一个是onPause,告诉服务活动已停止

答案 2 :(得分:0)

将以下方法与您的包名一起使用。如果您的任何活动位于前台,它将返回true。

public boolean isForeground(String myPackage){
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
 List< ActivityManager.RunningTaskInfo > runningTaskInfo = am.getRunningTasks(1); 

     ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
   if(componentInfo.getPackageName().equals(myPackage)) return true;
return false;
}