首页 > 其他分享 >Android系统开发之TimeZoneDetectorService浅析--下

Android系统开发之TimeZoneDetectorService浅析--下

时间:2024-01-28 14:31:32浏览次数:24  
标签:ConfigurationInternal -- detectionReason 更新 TimeZoneDetectorService telephony vo

TimeZoneDetectorService类图


Android系统开发之TimeZoneDetectorService浅析--下_android


可以看出TimeZoneDetectorService类,其具体实现是由TimeZoneDetectorStrategy类完成的。

在TimeZoneDetectorService类中,三种更新时区的接口分别为:

suggestGeolocationTimeZone()   //更新时区主要有三种方式 ,这是Geolocation方式
+boolean suggestManualTimeZone()  //更新时区主要有三种方式 ,这是手动Manual方式
+void suggestTelephonyTimeZone( //更新时区主要有三种方式 ,这是手动telephony方式

而在TimeZoneDetectorStrategy中,三种更新时区的接口分别为:

void suggestTelephonyTimeZone()//这对应用telephony更新时区
boolean suggestManualTimeZone()//这对应用手动Manual更新时区
+void suggestGeolocationTimeZone()//这对应用Geolocation更新时区

其我们上面提到的doAutoTimeZoneDetection接口,更是关注的重点:

doAutoTimeZoneDetection()//针对三种更新时区的方式来更新时区
private void doAutoTimeZoneDetection(
        @NonNull ConfigurationInternal currentUserConfig, @NonNull String detectionReason) {
    // Use the correct algorithm based on the user's current configuration. If it changes, then
    // detection will be re-run.
    switch (currentUserConfig.getDetectionMode()) {
        case ConfigurationInternal.DETECTION_MODE_MANUAL:
            // No work to do.
            break;
        case ConfigurationInternal.DETECTION_MODE_GEO: {
            boolean isGeoDetectionCertain = doGeolocationTimeZoneDetection(detectionReason);
            // When geolocation detection is uncertain of the time zone, telephony detection
            // can be used if telephony fallback is enabled and supported.
            if (!isGeoDetectionCertain
                    && mTelephonyTimeZoneFallbackEnabled.getValue()
                    && currentUserConfig.isTelephonyFallbackSupported()) {
                doTelephonyTimeZoneDetection(detectionReason + ", telephony fallback mode");
            }
            break;
        }
        case ConfigurationInternal.DETECTION_MODE_TELEPHONY:
            doTelephonyTimeZoneDetection(detectionReason);
            break;
        default:
            Slog.wtf(LOG_TAG, "Unknown detection mode: "
                    + currentUserConfig.getDetectionMode());
    }
}

标签:ConfigurationInternal,--,detectionReason,更新,TimeZoneDetectorService,telephony,vo
From: https://blog.51cto.com/u_16502883/9453189

相关文章

  • 互联网这座围城
    钱钟书先生的《围城》一书中,有这样一句话:外面的人想进去,里面的人想出去。对于互联网行业从业人员,特别是IT技术岗位,这句话依然适用。固然在行业风口正值巅峰时,号称互联网IT岗位是唯一在薪资报酬上媲美金融行业的岗位,但“35岁失业危机”的阴影笼罩下,这群曾经的收入巅峰人群,也要接......
  • Tornado 输出第一个"hello world"
    在Python中,使用Tornado框架输出"HelloWorld"的示例代码如下:importtornado.ioloopimporttornado.webclassMainHandler(tornado.web.RequestHandler):defget(self):self.write("HelloWorld")defmake_app():returntorna......
  • 《系统科学方法概论》绪论
    在看这本书前老师有讲关于系统这一概念,以及系统所那个带来的功能强调了其重要性,因此我也选择了讲解系统理论书籍中常绍舜所编著的《系统科学方法概论》这一书,在我读这本是之前,经过老师的讲解我对系统的了解是:系统是一种抽想的概念,可以称它为结构、程序、兵阵、机构或是像是有许多......
  • 安装Visual Studio的详细流程
      本文介绍VisualStudio2022软件Community(社区版)的下载、安装、运行与使用方法。  首先需要提一句,本文介绍的是VisualStudio2022软件的下载;而其它版本的VisualStudio软件(例如VisualStudio2019软件)下载方法与此大同小异,都可以参考本文所述的步骤。  首先,我们在软件......
  • Codeforces Round 921 (Div. 2) 赛后总结
    搜索替换int->longlong是一个好习惯赛后5分钟就改对E题了,好可惜。不过1个小时都没能做出来,也说明自己不太熟练吧线段树善于维护满足区间可加性的一类信息,这与本题中的代价和相契合。特殊之处在于其修改方式。每个区间会在线段树上被划分为\(O(log_{2}n)\)个小区间即使是最......
  • Qt 深度解析QMap与QHash
    一、QMap深度解析1、QMap是一个以升序键顺序存储键值对的数据结构(1)QMap原型为classQMap<K,T>模板(2)、QMap中的键值对根据key进行了排序(3)、QMap中的key类型必须重载operator<(小于操作符)2、QMap使用实例一 3、QMap使用实例二4、QMap的注意事项(1)、通过key获取Value时......
  • leetcode--98. 验证二叉搜索树(bfs)
    记录13:502024-1-28https://leetcode.cn/problems/validate-binary-search-tree/想岔方向了,想的太复杂了。首先思路是每个root节点必须大于左子树的最大节点,小于右边子树的最小节点。我的做法是记录下叶子节点,因为左边叶子节点的集合(vector)的最后一个节点为左子树的最大值......
  • 寒假训练2024/1/27
    2024/1/27uva120题意:给一个序列,给定一个序列的反转方式,要求用最少的次数把序列反转成升序思路:看到定级是个橙题,我以为就是简单的看头尾反转,因为样例给的很简单,按照猜测乱写了一个,WA了。看了一眼udebug,发现不是简单的头和尾是所需要的数字。我们需要先从大的数字开始,这是因......
  • [word] 如何快速更改word文档中标题和正文的字体
    Word2007版本以上支持快速更改标题和正文的字体一、打开word文档,点击【设计】选项卡 ......
  • [word] 如何在 Word 里给指定人设置特定文档权限
    在日常使用Word的过程中,如果需要给指定的人设置特定的权限,这时该如何操作呢?步骤一:先打开你需要分享的文档:步骤二:找到【文件】,并且点击:步骤三:点击【分享文档(D)】:步骤四:点击【指定好友】:步骤五:找到要分享的人:步骤六:然后点击:如果是只让他看,不让他编辑,就点击【仅查看】:如果可以让他看......