从Activity的onCreate中检测服务可用性

时间:2011-04-18 04:55:16

标签: android android-service

onCreate内的Activity内,我希望能够检测到其他应用程序中的Service是否可用(我正在编写)是否可用,运行。 AIDL的问题在于没有同步选项。我希望我的活动能够真正等到Service是否可用,并且如果不可以,则采取相应的行动。

我提出的最佳答案是服务打开TCP套接字并让Activity尝试连接到它。如果成功,则活动onCreate将知道该服务可用。然而,这至多是一个kludge。

所以,底线:我的活动onCreate如何同步检查外部Service是否可用,并在从onCreate例程返回之前采取措施?

1 个答案:

答案 0 :(得分:3)

您可以遍历公开List<ActivityManager.RunningServiceInfo> getRunningServices (int maxNum)返回的列表。每个ActivityManager.RunningServiceInfo都包含您需要的信息

检查API herehere

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
}