小编Dav*_*sey的帖子

在Android上每次启动后运行一次代码

我需要一些初始化代码才能在每次重启后尽快运行一次,然后在设备运行时再也不会再运行一次.

  • 存储指示代码已运行的SharedPreference不合适,因为它可以在重新启动后继续存在.
  • 依赖于ACTION_SHUTDOWN清除SharedPreference值是不够好的,因为有时候不会发送它(例如电池被移除).
  • 使用静态字段来指示代码已运行是不合适的,因为如果我的应用程序被杀死,它将被重置.
  • 在我的Application类中使用一些初始化代码是不合适的,因为如果我的应用程序被杀死,这将再次运行.
  • 接收ACTION_BOOT_COMPLETED几乎已经足够好了,但这可以在我的应用响应的其他广播之前(例如ACTION_TIME_CHANGED),并且可以在我已经从启动器启动我的应用程序之后被解雇.我需要这个一次性设置代码才能运行.
  • 我不能依靠System.currentTimeMillis计算启动时间,因为时钟更改会改变明显的启动时间.

一种选择是获取设备的最后启动时间,看看是否已经改变(System.elapsedTime()不够好).我尝试过执行类似的命令who -b,last reboot但两者都拒绝了权限.

另一种选择是在某个地方存储设置/首选项,只有在设备重新启动时它才会被重置,但如果我的应用程序被杀死则不会.

是否有其他选择,或实施上述方法之一?

android

13
推荐指数
2
解决办法
1360
查看次数

标签 统计

android ×1