我为 Android 构建了一个应用程序来自动登录到特定的访客无线网络。我希望这个应用程序即使在 UI/Activity 没有显示/运行时也能工作和运行。
目前它似乎运作良好,但我质疑设计的后勤工作。我的问题是:
- 我什至需要服务吗?
- 我的设计倒退了吗?广播接收器是否应该调用服务来完成工作?
- 您可以在清单中注册广播接收器而不必在代码中调用它吗?
- 多次调用 startService() 不好?我知道只有 1 个服务在运行,但是如何在创建服务之前检查该服务是否已经在运行?
该应用程序有 3 个组件:
- Activity - 有一个用于显示当前网络信息和关闭/“停止服务”按钮的 GUI
- 服务- 这个服务所做的只是注册一个广播接收器
广播接收器- 这是大部分工作。3.
- Activity 的 onCreate() 调用 Context.startService()
- Service onCreate() 创建通知图标并注册广播接收器
- 广播接收器 onReceive() 检查网络状态是否已更改意图,然后检查当前是否连接到特定 SSID,然后调用我创建的特殊类来注册/检查是否经过身份验证。