【发布时间】:2014-08-28 01:42:49
【问题描述】:
我正在处理这个项目,即使主应用程序不在前台,我也需要位置更新和数据上传。我正在考虑将所有位置和网络功能放在一个服务中(XService,为了论证),并使用同一进程中的广播在 Activity(主)和 XService 之间进行通信(其他应用程序无法访问)。
我还没有写代码,但是工作流程是这样的:
1. Main -- 开始。在onCreate中,启动一个新的Thread,然后就可以了 实例化和绑定 XService。
2. 主界面——登录界面。获取数据, 将其打包在 Intent 中并广播到 XService。
3. XService -- 接收广播,解包意图。设置套接字和数据流。设置 LocationManager 用于更新。向 Main 广播网络是 准备好。每次 LocationManager 更新时上传数据。
4. Main -- 收到网络就绪广播后,准备Intent进行初始化和广播。
5. XService -- 接收 初始化请求广播,解包,执行网络任务, 广播回应。
6. 根据用户重复令人作呕 互动和任何定时更新。
x.主要——注销时, 广播到 XService。
x+1。 XService -- 发送注销信息到 服务器,关闭套接字,向 Main 广播它正在退出 优雅地,然后 stopSelf()。
x+2 Main -- 完成注销 过程。
我的主要问题是——这是正确的做法吗?
另一个问题是:当 XService 向 Main 广播 Location 更新,但 Main 停止(即没有在前台运行)时会发生什么?我假设由于 Main 处于停止状态而未实例化 Main 上的 BroadcastReceiver,因此广播基本上什么都不做。这种未接收到的广播如何影响(或不影响,视情况而定)XService 或整个流程/设备?
【问题讨论】:
标签: android networking android-intent service broadcast