来自 onCreate
在 Activity
内,我希望能够检测到是否 Service
在不同的应用程序(我也在写)中可用并正在运行。 AIDL 的问题是没有同步选项。我希望我的 Activity 真正等待查看 Service
是否可用,如果不可用则采取相应措施。
我想出的最佳答案是让服务打开一个 TCP 套接字并让 Activity 尝试连接到它。如果成功,则 Activity 的 onCreate
将知道该服务可用。然而,这充其量只是一种拼凑。
所以,底线是:我的 Activity 的 onCreate
如何同步检查是否有外部 Service
可用并在从 onCreate
返回之前采取行动例行公事?
最佳答案
您可以遍历 public List<ActivityManager.RunningServiceInfo> getRunningServices (int maxNum)
返回的列表.每个ActivityManager.RunningServiceInfo
包含您需要的信息
ActivityMAnager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
ArrayList<ActivityManager.RunningServiceInfo> rsiList = am.getRunningServices (999);
boolean found = null;
for (ActivityManager.RunningServiceInfo rsi: rsiList) {
if (rsi.service.getPackageName().equals("MYPACKAGE") {
found = true;
break;
}
}
if (found) {
// do whatever
} else {
// alternative
}
关于android - 从 Activity 的 onCreate 检测服务可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5698666/