我想知道即使应用程序被系统杀死(需要无限期运行),运行的Service
的良好架构设计也是如此,并且需要用户通过身份验证才能与后端。
例如,一个应用程序会提示您登录,并且经过身份验证后,Service
会将您当前的位置通知给服务器。在这种情况下,可能需要使用保存的凭据自动登录。
我预见到一些可能很重要的设计决策:
Service
不知道,则绝对可以接受。但是,当通过应用程序再次登录时,它应该更新其凭据并再次正常运行。我在这些解决方案中已经考虑过,但可能并不理想:
应用中的所有服务器通信以及Service
都会在必要时使用AlarmManager
&唤醒应用。 BroadcastReceiver
。
将服务器通信(例如,位置通知)放在Service
中,并在更新凭据时通知应用程序的凭据(令牌,无论如何,...尝试进行一些身份验证后端实施不可知)。
在AccountManager
中实施Account
并保持两个组件的独立性。 Service
依赖于AccountManager
,因此无需处理身份验证,也可以自行完成工作。
建议的解决方案的优点和不便之处?还有其他方法吗?
在(1)中,如果与后端的通信非常激烈,我确实会发现WakeLock
过于频繁(电池耗尽)的问题。 (3)似乎更孤立,但我没有经验,也不知道缺点。