在onCreate
内的Activity
内,我希望能够检测到其他应用程序中的Service
是否可用(我正在编写)是否可用,运行。 AIDL的问题在于没有同步选项。我希望我的活动能够真正等到Service
是否可用,并且如果不可以,则采取相应的行动。
我提出的最佳答案是服务打开TCP套接字并让Activity尝试连接到它。如果成功,则活动onCreate
将知道该服务可用。然而,这至多是一个kludge。
所以,底线:我的活动onCreate
如何同步检查外部Service
是否可用,并在从onCreate
例程返回之前采取措施?
答案 0 :(得分:3)
您可以遍历公开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
}