android - 从 Activity 的 onCreate 检测服务可用性

标签 android android-service

来自 onCreateActivity 内,我希望能够检测到是否 Service在不同的应用程序(我也在写)中可用并正在运行。 AIDL 的问题是没有同步选项。我希望我的 Activity 真正等待查看 Service 是否可用,如果不可用则采取相应措施。

我想出的最佳答案是让服务打开一个 TCP 套接字并让 Activity 尝试连接到它。如果成功,则 Activity 的 onCreate将知道该服务可用。然而,这充其量只是一种拼凑。

所以,底线是:我的 Activity 的 onCreate 如何同步检查是否有外部 Service可用并在从 onCreate 返回之前采取行动例行公事?

最佳答案

您可以遍历 public 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
}

关于android - 从 Activity 的 onCreate 检测服务可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5698666/

相关文章:

android - 在运行时下载网页内容并在 Android webview 上加载

android - 在 Android 中使用 GPS 计算速度

android - 如何在 NavigationView 中的项目上添加徽章

android - 我需要 Firebase 推送 ID 的整数表示

android - Unity 3d 应用程序崩溃并显示消息 : Failure to initialize, 您的硬件不支持此应用程序

android - 不使用 BIND_AUTO_CREATE 时 ServiceConnection 泄漏

android - 第 2 部分 由 UI 启动的持久性前台 android 服务,也可以在 sleep 模式下工作,也可以在手机重启时启动

android - 当设备进入休眠状态时服务会发生什么

Android Mosby MVI 绑定(bind)到演示者中的服务

android - 长时间运行的服务会消耗大量电池