Service没被杀死,但是成员变量被重置了

我的Service中有个全局变量标识用户是否登录,布尔类型。测试发现当手机锁屏一段时间后,该变量的值由true变成了false,但是在onDestroy()里写的日志并没有输出到文件里。这是什么原理,应该怎么处理?

阅读 2.4k
1 个回答

基础知识: Service#onDestroy()不是一定会被调用到的。

参考资料:

  1. Android Developers: Process Lifecycle
  2. statckoverflow: onDestroy() method not called when using Force Stop
  3. statckoverflow: Is an android service guaranteed to call onDestroy()?

让人困惑的问题: App使用完退出后,下次使用需要再次登录?

  1. 如果是,把该全局变量变为Application的成员变量会更好,应该减少全局变量的使用。
  2. 如果不是,那么管理登录用户信息的就应该采用OAuth2.0或者JSON Web Token的实现方案。也不推荐本地保存登录用户名和密码的方式(一旦系统ROOT之后,风险极高)。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏