iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Android AlarmManagerService-设置系统时间无效的问题
  • 150
分享到

Android AlarmManagerService-设置系统时间无效的问题

android 2023-09-16 14:09:23 150人浏览 薄情痞子
摘要

现象 使用系统接口设置时间生效,查看rtc也设置成功。但是重启后时间为首次开机的时间. 分析 多次测试后发现,设置时间在第一次开机时系统显示的时间之后,重启后时间设置生效;设置在之前,则会还原成第一次系统开机时显示的时间。 所以怀疑时,

现象


使用系统接口设置时间生效,查看rtc也设置成功。但是重启后时间为首次开机的时间.

分析


多次测试后发现,设置时间在第一次开机时系统显示的时间之后,重启后时间设置生效;设置在之前,则会还原成第一次系统开机时显示的时间。

所以怀疑时,系统在开机的时候做了时间有效检测.查看AlarmManagerService.java后发现系统会用当前时间和编译固件的时间做对比,如果早于编译时间则使用编译时间为当前时间。

frameworks/base/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java

@Override    public void onStart() {        mInjector.init();        mMetricsHelper = new MetricsHelper(getContext(), mLock);        mListenerDeathRecipient = new IBinder.DeathRecipient() {            @Override            public void binderDied() {            }            @Override            public void binderDied(IBinder who) {                final IAlarmListener listener = IAlarmListener.Stub.asInterface(who);                removeImpl(null, listener);            }        };        synchronized (mLock) {            mHandler = new AlarmHandler();            mConstants = new Constants();            mAlarmStore = mConstants.LAZY_BATCHING ? new LazyAlarmStore()                    : new BatchingAlarmStore();            mAlarmStore.setAlarmClockRemovalListener(mAlarmClockUpdater);            mAppWakeupHistory = new AppWakeupHistory(Constants.DEFAULT_APP_STANDBY_WINDOW);            mAllowWhileIdleHistory = new AppWakeupHistory(INTERVAL_HOUR);            mAllowWhileIdleCompatHistory = new AppWakeupHistory(INTERVAL_HOUR);            mNextWakeup = mNextNonWakeup = 0;            // We have to set current TimeZone info to kernel            // because kernel doesn't keep this after reboot            setTimeZoneImpl(SystemProperties.get(TIMEZONE_PROPERTY));            // Ensure that we're booting with a halfway sensible current time.  Use the            // most recent of Build.TIME, the root file system's timestamp, and the            // value of the ro.build.date.utc system property (which is in seconds).            final long systemBuildTime = Long.max(                    1000L * SystemProperties.getLong("ro.build.date.utc", -1L),                    Long.max(Environment.getRootDirectory().lastModified(), Build.TIME));            if (mInjector.getCurrentTimeMillis() < systemBuildTime) {                Slog.i(TAG, "Current time only " + mInjector.getCurrentTimeMillis()                        + ", advancing to build time " + systemBuildTime);                mInjector.seTKErnelTime(systemBuildTime);            }            mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);        ...        ...    }

解决办法

屏蔽此处的时间检验即可或者向客户说明情况

    if (mInjector.getCurrentTimeMillis() < systemBuildTime) {                Slog.i(TAG, "Current time only " + mInjector.getCurrentTimeMillis()                        + ", advancing to build time " + systemBuildTime);                mInjector.setKernelTime(systemBuildTime);            }

来源地址:https://blog.csdn.net/u010664697/article/details/132063889

您可能感兴趣的文档:

--结束END--

本文标题: Android AlarmManagerService-设置系统时间无效的问题

本文链接: https://www.lsjlt.com/news/409958.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android AlarmManagerService-设置系统时间无效的问题
    现象 使用系统接口设置时间生效,查看rtc也设置成功。但是重启后时间为首次开机的时间. 分析 多次测试后发现,设置时间在第一次开机时系统显示的时间之后,重启后时间设置生效;设置在之前,则会还原成第一次系统开机时显示的时间。 所以怀疑时,...
    99+
    2023-09-16
    android
  • Android时间设置问题怎么解决
    这篇文章主要讲解了“Android时间设置问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android时间设置问题怎么解决”吧!问题现象最近处理了一个非常有意思的系统bug,修改...
    99+
    2023-07-05
  • Springboot2 session设置超时时间无效的解决
    问题: 今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。 解决方案: server.*属性用于...
    99+
    2024-04-02
  • java-D参数设置系统属性无效问题及解决
    目录java -D参数设置系统属性无效java程序启动参数 -D详解下面我们来写个测试方法就知道了总结java -D参数设置系统属性无效 我们都知道如何在Java中获取系统属性: S...
    99+
    2022-12-28
    java -D参数 -D参数设置系统属性 -D参数设置系统属性无效
  • JS设置时间无效怎么办
    这篇文章主要为大家展示了“JS设置时间无效怎么办”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS设置时间无效怎么办”这篇文章吧。在发送短信息验证码的时候要用到...
    99+
    2024-04-02
  • win8系统设置时间的方法
    一般有下列问题: 1、win8怎么把右下角的时间改为24小时制? 解决方法: A、点击时间区域--更改时间和日期设置--更改时间和日期--更改日历设置--区域-短时间HH:mm长时间HH:mm:ss B、打 2、win...
    99+
    2023-06-04
    win8系统设置 设置 时间 方法
  • Springboot2 session设置超时时间无效的解决方法
    本篇内容介绍了“Springboot2 session设置超时时间无效的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题:今天项目...
    99+
    2023-06-20
  • JWT设置token过期时间无效的解决
    目录JWT 设置token过期时间无效原因原因分析JWT token过期自动续期解决方案JWTtokentoken过期刷新方案JWT 设置token过期时间无效 原因 设置超时时间的...
    99+
    2024-04-02
  • Redis 设置密码无效问题解决
    目录一、验证密码有没有生效二、解决方案是:直接修改后缀是 .conf 的文件,再用命令启动一、验证密码有没有生效 运行cmd,cd到Redis的目录下 输入“redis-cli.exe” 回车 输...
    99+
    2023-02-27
    Redis设置密码无效 Redis密码无效
  • Redis设置密码无效问题解决
    目录一、验证密码有没有生效二、解决方案是:直接修改后缀是 .conf 的文件,再用命令启动一、验证密码有没有生效 运行cmd,cd到redis的目录下 输入“redis-...
    99+
    2023-02-27
    Redis 设置密码无效 Redis 密码无效
  • Linux系统设置系统时间的方法有哪些
    小编给大家分享一下Linux系统设置系统时间的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先我们会先设日期   dat...
    99+
    2023-06-28
  • Linux中怎么设置系统时间
    本篇文章给大家分享的是有关Linux中怎么设置系统时间,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、查询系统时间:查询系统时间:date查询/设置硬件时间:  &...
    99+
    2023-06-05
  • CentOS系统中怎么设置时间
    本篇内容介绍了“CentOS系统中怎么设置时间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!安装ntp代码如下:#yum install n...
    99+
    2023-06-10
  • win10系统时间与Internet时间如何同步设置
    这篇文章主要介绍win10系统时间与Internet时间如何同步设置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先登录到win10系统桌面,然后点击任务栏右侧的时间显示区域,点击打开“更改日期和时间设置...”。...
    99+
    2023-06-28
  • 如何解决mysql5.6 utf8设置无效问题
    这篇文章主要介绍了如何解决mysql5.6 utf8设置无效问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。绿色版安装的mysql5.6解...
    99+
    2024-04-02
  • Python调用系统命令设置超时时间
        python通过subprocess模块调用系统命令。实际使用中,有一次是命令进入了交互模式,结果web端直接卡死了。调用时设置一个超时时间,时间用完后自动断开。这样就避免了系统因为调用命令而僵死的问题。def sys_comman...
    99+
    2023-01-31
    命令 时间 系统
  • win7系统怎么设置待机时间
    这篇文章将为大家详细讲解有关win7系统怎么设置待机时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。点击“开始”菜单,打开“控制面板”。更改控制面板的查看方式,找到“电源选项”并打开。在弹出的窗口中,选...
    99+
    2023-06-28
  • 解决docker中mysql时间与系统时间不一致问题
    最近在Docker中装mysql时,发现数据库时间与系统时间相差8个小时。 linux服务器时间: 进入mysql,输入date如下 发现两者时区不同。因为mysql容器是在do...
    99+
    2024-04-02
  • centos7系统如何设置锁屏时间
    这篇文章主要介绍了centos7系统如何设置锁屏时间,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。centos7 系统设置锁屏时间的好处就是可以保护隐私,让自己的电脑更安全,...
    99+
    2023-06-10
  • win8系统怎么设置待机时间
    这篇文章将为大家详细讲解有关win8系统怎么设置待机时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。用快捷键Win+R,打开运行,输入gpedit.msc,打开组策略。 在用户配置下找到管理模...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作