CN110019241A - 一种通讯录下载方法、装置和计算机可读存储介质 - Google Patents

一种通讯录下载方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN110019241A
CN110019241A CN201711480962.1A CN201711480962A CN110019241A CN 110019241 A CN110019241 A CN 110019241A CN 201711480962 A CN201711480962 A CN 201711480962A CN 110019241 A CN110019241 A CN 110019241A
Authority
CN
China
Prior art keywords
address book
book data
address
data
downloading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711480962.1A
Other languages
English (en)
Inventor
郑博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Shenzhou Taiyue Software Co Ltd
Original Assignee
Beijing Shenzhou Taiyue Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Shenzhou Taiyue Software Co Ltd filed Critical Beijing Shenzhou Taiyue Software Co Ltd
Priority to CN201711480962.1A priority Critical patent/CN110019241A/zh
Publication of CN110019241A publication Critical patent/CN110019241A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/26Devices for calling a subscriber
    • H04M1/27Devices whereby a plurality of signals may be stored simultaneously
    • H04M1/274Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc
    • H04M1/2745Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc using static electronic memories, e.g. chips
    • H04M1/2753Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc using static electronic memories, e.g. chips providing data content
    • H04M1/2757Devices whereby a plurality of signals may be stored simultaneously with provision for storing more than one subscriber number at a time, e.g. using toothed disc using static electronic memories, e.g. chips providing data content by data transmission, e.g. downloading

Abstract

本发明公开了一种通讯录下载方法、装置和计算机可读存储介质。该方法包括:当接收到下载通讯录的指令时,开启第一子线程,使用第一子线程从服务器下载通讯录的基本信息,根据基本信息确定需要从服务器下载的通讯录数据;开启第二子线程,使用第二子线程从服务器下载所确定的通讯录数据;每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值;根据每条通讯录数据中的状态值,将下载的通讯录数据保存至本地通讯录数据库中。可见,使用子线程完成下载任务,不会防止和影响主线程的操作和响应;同时,保证了通讯录数据的准确性以及本地通讯录数据库的准确定,增强用户的使用体验。

Description

一种通讯录下载方法、装置和计算机可读存储介质
技术领域
本发明涉及计算机领域,具体涉及一种通讯录下载方法、装置和计算机可读存储介质。
背景技术
在现代企业管理领域,为了便于企业的管理,会使用员工通讯录管理系统,各员工在移动终端输入自己的通讯信息后,该通讯信息会上报给服务器以保存,当员工需要下载服务器中的通讯录时,只要发送下载请求即可完成企业中其他员工的通讯信息的下载。
但是,一个企业中的员工少则几十人多则几十万甚至几百万人,这样会形成一个庞大的通讯录,当员工将该通讯录下载至移动终端时,会消耗很多的时间,而且在下载的期间内,员工不能对移动终端进行任何的操作(如通讯录的访问操作),直到下载完成后,才能进行通讯录的访问,降低用户的使用体验;同时,在进行通讯录下载时,各条通讯录数据的当前状态无法识别,会造成通讯录数据的不准确,例如,下载的一条通讯录数据是更新的,则下载保存至本地通讯录数据库时,只是简单的保存,那么在本地通讯录数据库中,该员工的通讯数据就会显示两条,造成通讯录数据库的不准确。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的通讯录下载方法、装置和计算机可读存储介质。
依据本发明的一个方面,提供了一种通讯录下载方法,所述方法包括:
当接收到下载通讯录的指令时,开启第一子线程,使用所述第一子线程从服务器下载所述通讯录的基本信息,根据所述基本信息确定需要从服务器下载的通讯录数据;
开启第二子线程,使用所述第二子线程从服务器下载所确定的所述通讯录数据;每条所述通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值;
根据每条所述通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中。
可选地,所述通讯录的基本信息包括所述通讯录中的通讯录数据的总条数和所述通讯录的分组信息;
所述根据所述基本信息确定需要从服务器下载的通讯录数据包括:
判断所述通讯录中的通讯录数据的总条数是否不大于预设阈值,
若判断为是,则将所述通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据,若判断为否,则根据所述通讯录的分组信息将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据;
和/或,
根据所述通讯录的分组信息将用户选择的指定组通讯录中的通讯录数据,确定为需要从服务器下载的通讯录数据;
和/或,
根据所述通讯录的分组信息用户选择的指定组中的指定通讯录数据,确定为需要从服务器下载的通讯录数据。
可选地,
所述开启第二子线程,使用所述第二子线程从服务器下载所确定的所述通讯录数据包括:调用移动终端系统的GCD线程管理程序开启第二子线程;利用Protocol Buffers技术,使用开启的所述第二子线程,从服务器下载所确定的所述通讯录数据;
所述将下载的通讯录数据保存至本地通讯录数据库中包括:将下载的通讯录数据作为一个操作序列,采用事务处理方式将下载的通讯录数据保存至通讯录数据库中。
可选地,所述用于标识该条通讯录数据的当前状态的状态值包括:标识通讯录数据是新增的状态值;标识通讯录数据是更新的状态值;标识通讯录数据被删除的状态值;
所述根据每条通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中包括:
若所述通讯录数据中的状态值标识为新增,则将该条通讯录数据增添至所述本地通讯录数据库中;
若所述通讯录数据中的状态值标识为更新,则使用下载的该条通讯录数据更新所述本地通讯录数据库中相应的通讯录数据;
若所述通讯录数据中的状态值标识为被删除,则删除所述本地通讯录数据库中相应的通讯录数据。
可选地,在所述根据每条通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中之前,所述方法进一步包括:
根据所述本地通讯录数据库中已有的通讯录数据信息,判断下载的每条所述通讯录数据中的状态值是否准确;若不准确,则更改该条通讯录数据中的状态值。
根据本发明的另一方面,提供了一种通讯录下载装置,所述装置包括:
确定单元,适于当接收到下载通讯录的指令时,开启第一子线程,使用所述第一子线程从服务器下载所述通讯录的基本信息,根据所述基本信息确定需要从服务器下载的通讯录数据;
下载单元,适于开启第二子线程,使用所述第二子线程从服务器下载所确定的所述通讯录数据;每条所述通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值;
保存单元,适于根据每条所述通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中。
可选地,所述通讯录的基本信息包括所述通讯录中的通讯录数据的总条数和所述通讯录的分组信息;
所述确定单元,适于判断所述通讯录中的通讯录数据的总条数是否不大于预设阈值,若判断为是,则将所述通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据,若判断为否,则根据所述通讯录的分组信息将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据;
和/或,
根据所述通讯录的分组信息将用户选择的指定组通讯录中的通讯录数据,确定为需要从服务器下载的通讯录数据;
和/或,
根据所述通讯录的分组信息用户选择的指定组中的指定通讯录数据,确定为需要从服务器下载的通讯录数据。
可选地,所述用于标识该条通讯录数据的当前状态的状态值包括:标识通讯录数据是新增的状态值;标识通讯录数据是更新的状态值;标识通讯录数据被删除的状态值;
所述保存单元,适于若所述通讯录数据中的状态值标识为新增,则将该条通讯录数据增添至通讯录数据库中;
若所述通讯录数据中的状态值标识为更新,则使用下载的该条通讯录数据更新通讯录数据库中相应的通讯录数据;
若所述通讯录数据中的状态值标识为被删除,则删除通讯录数据库中相应的通讯录数据。
可选地,所述装置进一步包括:
判断单元,适于在所述根据每条所述通讯录数据中的状态值,将下载的通讯录数据保存至通讯录数据库中之前,根据通讯录数据库中已有的通讯录数据信息,判断下载的每条通讯录数据中的状态值是否准确;若不准确,则更改该条通讯录数据中的状态值。
根据本发明的又一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现前述的方法。
根据本发明的技术方案,使用子线程完成下载任务,不会防止和影响主线程的操作和响应,用户仍然可以通过主线程进行本地通讯录数据库的访问操作;同时,每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值,根据该状态值将通讯录数据保存至本地通讯录数据库中,保证了通讯录数据的准确性以及本地通讯录数据库的准确定,增强用户的使用体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的通讯录下载方法的流程示意图;
图2示出了根据本发明另一个实施例通讯录下载方法的流程示意图;
图3示出了根据本发明一个实施例的通讯录下载装置的结构示意图;
图4示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的通讯录下载方法的流程示意图。如图1所示,该方法包括:
步骤S110,当接收到下载通讯录的指令时,开启第一子线程,使用第一子线程从服务器下载通讯录的基本信息,根据基本信息确定需要从服务器下载的通讯录数据。
本实施例主要是针对企业中的大型通讯录的下载。在本实施例中,用户会通过安装在移动终端上的通讯录应用程序完成对企业通讯录的下载,当用户启动应用程序后,会开启该应用程序的主线程,用户通过该主线程完成对本地通讯录数据的访问操作。
当用户通过上述的应用程序下载通讯录时,为了保证不影响主线程的操作和响应,需要开启一个子线程。
另外,企业通讯录中的通讯录数据比较多,而且用户需要的可能只是和自己工作内容有对接的其他用户的通讯录数据,如果将企业通讯录的通讯录数据全部进行下载,一方面会浪费较多的时间,另一方面,下载的通讯录数据未必全都是用户所需要的,因此,在本实施例中,首先开启第一子线程,从服务器下载通讯录的基本信息,根据基本信息确定需要下载的通讯录数据,避免下载时间的过度消耗,保证下载的通讯录数据对用户的可用性,增强用户的使用体验。
本实施例中的下载通讯录的指令,可以是用户自行输入的指令(如触发下载或更新通讯录的控件),也可以是以一定的频率(每隔1天)自行触发下载指令。
如果通讯录基本信息下载失败,则不会进行步骤S130,而是返回下载失败的信息,并设置重新下载的控件,以便用户重新下载通讯录。
步骤S120,开启第二子线程,使用第二子线程从服务器下载所确定的通讯录数据;每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值。
上述的第一子线程的任务是下载通讯录的基本信息,当确定好需要从服务器下载的通讯录数据后,则第一子线程的任务完成,为了确保下载过程中各任务之间不会相互影响,在本实施例中,进行通讯录数据的下载时,开启第二子线程,使用第二子线程下载所确定的通讯录数据。
步骤S130,根据每条通讯录数据中的状态值,将下载的通讯录数据保存至本地通讯录数据库中。
从服务器下载的每条通讯录数据中都包括该条通讯录数据的当前状态的状态值(即state值),当将下载的通讯录数据保存至本地通讯录数据库中时,根据每条通讯录数据的状态值进行保存。这里的状态值可以是表示通讯录数据是新增的状态的状态值、表示通讯录数据是更新的状态的状态值、表示通讯录数据是被删除的状态的状态值。例如,该条通讯录数据是新增(状态值为新增)的通讯录数据,则直接将该通讯录数据添加至本地通讯录数据库中即可,因为该状态值标识了该条通讯录数据的状态;该条通讯录数据是更新(状态值为更新)的通讯录数据,则将本地通讯录数据库中对应该条通讯录数据更新为该条通讯录数据;该条通讯录数据是更新(状态值为删除)的通讯录数据,则将本地通讯录数据库中对应该条通讯录数据进行删除的操作。这样,就保证了该条通讯录数据的准确性,进而在保存至本地通讯录数据库中时,可以保证本地通讯录数据库的准确性。
在本实施例中,下载通讯录的过程中,用户仍然可以使用主线程对本地通讯录数据库进行访问操作,当通讯录下载及保存成功后,会通过回调方法通知用户正在访问的通讯录页面进行刷新,从本地通讯录数据库中获取最新的通讯录数据加载到用户访问的通讯录页面中。
可见,通过本技术方案,使用子线程完成下载任务,不会防止和影响主线程的操作和响应,用户仍然可以通过主线程进行本地通讯录数据库的访问操作;每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值,根据该状态值将通讯录数据保存至本地通讯录数据库中,保证了通讯录数据的准确性以及本地通讯录数据库的准确定;同时,根据通讯录的基本信息确定需要下载的通讯录数据,避免下载时间的过度消耗,保证下载的通讯录数据对用户的可用性,增强用户的使用体验。
在本发明的一个实施例中,通讯录的基本信息包括通讯录中的通讯录数据的总条数和通讯录的分组信息。
步骤S120中的根据基本信息确定需要从服务器下载的通讯录数据包括:判断通讯录中的通讯录数据的总条数是否不大于预设阈值,若判断为是,则将通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据,若判断为否,则根据所述通讯录的分组信息将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据。
在本实施例中,是根据预设的下载通讯录数据的条数阈值确定的,当下载服务器中的通讯录中包含的通讯录数据的总条数不大于预设阈值时,说明通讯录中的通讯录数据可以全部下载,则将通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据。当总条数大于预设阈值时,则可以只下载与用户有密切关系的通讯录数据即可,本实施例中是将该用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据。
因为本实施例是针对企业通讯录的下载,不同的用户所在的部门不一样,即在通讯录中的所属的分组不一样,用户进行通讯录下载时,是基于已经使用自身账号登录相应的应用程序的情况下进行的,则这里的用户对应的那组通讯录是指与当前进行下载任务的应用程序的登录账号所在的那一组通讯录,即用户所在的部门的其他用户的通讯录数据。
这里的预设阈值可以是系统自行设定,也可以是用户根据自身需求设定,例如,500。
例如,在企业中,用户A属于企业的市场部门,设定的预设阈值是500,在进行通讯录下载时,返回的通讯录的总条数是10000,大于预设阈值500,则只下载属于市场部门的通讯录数据。
需要说明的是,当将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据时,即使与用户对应的那组通讯录中的通讯录数据的条数也大于了预设阈值,则仍然是下载那组通讯录中的全部通讯录数据。
在上一个例子中,市场部门的通讯录数据的条数是600条,则仍然是将该市场部门的600条通讯录数据下载至用户A的本地通讯录数据库中。
在本发明的一个实施例中,将下载的通讯录的分组信息展示在移动终端的屏幕上,以便用户进行选择。则步骤S120中的根据基本信息确定需要从服务器下载的通讯录数据包括:根据所述通讯录的分组信息将用户选择的指定组通讯录中的通讯录数据,确定为需要从服务器下载的通讯录数据;和/或根据所述通讯录的分组信息用户选择的指定组中的指定通讯录数据,确定为需要从服务器下载的通讯录数据。
在本实施例中,用户在显示的选择界面中选择一个或多个指定组通讯录作为需要下载的。和/或,当用户选择一个指定组后,该指定组中的通讯录数据展开显示,用户可以选择该指定组通讯录下的一条或多条通讯录数据。
例如,市场部用户B选择运营部通讯录进行下载,和/或行政部的一条或多条通讯录数据进行下载。
这样,用户可以根据自己的意愿选择需要下载的通讯录数据,选择自己想要下着的通讯录数据,而自己不需要的通讯录数据就可以不选择,使得用户可以合理使用自己的通讯录存储空间,进一步增强用户的使用体验。
需要说明的是,上述的确定需要从服务器下载的通讯录数据的实施例可以分别单独实施,也可以结合实施。
例如,根据通讯录的总条数信息大于预设阈值,确定了将用户C对应的市场部通讯录的通讯录数据作为需要下载的通讯录数据,然后用户还可以选择财务部通讯录的通讯录数据作为需要下载的通讯录数据。
在本发明的一个实施例中,下载的通讯录的基本信息中还包括通讯录组与组之间的从属关系信息,以便用户根据该从属关系信息选择需要下载的通讯录信息,因为用户可以从组与组之间的从属关系中可以确定各组通讯录之间的关系,在进行选择需要下载的通讯录时,快速确定自己想要下载的通讯录数据,减少操作步骤,进一步增强用户的使用体验。
当上述的实施例应用在ios系统的移动终端中时,在本发明的一个实施例中,步骤S120中的开启第一子线程包括:调用移动终端系统的GCD线程管理程序开启第一子线程。
GCD是苹果开发的一个多核编程的解决方法,简单易用,效率高,速度快,基于C语言,更底层更高效,并且不是Cocoa框架的一部分,自动管理线程生命周期(创建线程、调度任务、销毁线程)。使用GCD技术将所有的数据库操作放入到子线程中,不会对主线程的加载操作进行影响。当子线程结束之后在将操作结果返回到主线程中,保证主线程的安全性。
在本发明的一个实施例中,步骤S130中的开启第二子线程,使用第二子线程从服务器下载所确定的通讯录数据包括:调用移动终端系统的GCD线程管理程序开启第二子线程;利用Protocol Buffers技术,使用开启的第二子线程,从服务器下载所确定的通讯录数据。
这里的GCD线程管理程序详见上述说明。
在现有技术中,进行通讯录下载时,通常是采用JSOM数据串进行通讯录数据的传输,但是通讯录数据是比较私密的信息,使用JSON串传输容易泄露通讯录数据,会给通讯录数据的传输带来安全隐患;JSON的数据报文较长,大量的通讯录数据下载会导致大量的流量消耗,且容易出错,用户使用体验不好;同时大数据量的JSON串只要有一条数据有问题,可能会导致整个JSON串无法解析,同时大数据量频繁操作数据库会给移动终端很大的压力,同时容易产生崩溃问题。
Protocol Buffers(简称PB)是google的一种数据交换的格式,它独立于语言,独立于平台。google提供了多种语言的实现:java、c#、c++、go和python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用xml进行数据交换快。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很好的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
在本实施例中,采用Protocol Buffers技术下载。在这里,Protocol Buffers是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化,用于通讯协议、数据存储等领域中,与语言无关、平台无关、可扩展的序列化结构数据格式。服务器通过发送数据流,客户端只需要生成对应的pbuffer类,调用-(instancetype)initWithData:(NSData*)data error:(NSError**)errorPtr方法,就会自动将数据流转成model格式的数据源了。在进行Protocol Buffers数据流解析时,根据特定的方式进行解析即可,例如,用户进行通讯录数据下载时,调用-(instancetype)initWithData:(NSData*)data error:(NSError**)errorPtr方法,将需要下载的通讯录数据转成model格式的数据源,下载至用户本地时,将model格式的数据源进行对应的解析。相比较JSON技术,更为安全,不存在安全隐患。报文较短,大量的通讯录数据下载消耗的流量较少。一条数据有问题,不影响其他数据的解析,也不会给移动终端带来过大的压力,保证移动终端的稳定性。
在本发明的一个实施例中,步骤S140中的将下载的通讯录数据保存至本地通讯录数据库中包括:将下载的通讯录数据作为一个操作序列,采用事务处理方式将下载的通讯录数据保存至通讯录数据库中。
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把这两者看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。因此,在本实施例中,在将下载的通讯录数据保存至数据库的时候,将下载的全部通讯录数据看做是一个操作序列,只有将全部的通讯录数据都保存完毕才算完成,保证了数据的完整性,也防止了垃圾数据带来的数据准确性问题。且在保存过程中,如果出现错误,则以保存的通讯录数据会恢复到保存前的状态,不会破坏数据库的原有数据。使用事务处理,能防止数据错误时的报错,也不会破坏原有数据,增强了系统的稳定性。
在本发明的一个实施例中,用于标识该条通讯录数据的当前状态的状态值包括:标识通讯录数据是新增的状态值;标识通讯录数据是更新的状态值;标识通讯录数据被删除的状态值。
图1所示的步骤S140中的根据每条通讯录数据中的状态值,将下载的通讯录数据保存至本地通讯录数据库中包括:若通讯录数据中的状态值标识为新增,则将该条通讯录数据增添至本地通讯录数据库中;若通讯录数据中的状态值标识为更新,则使用下载的该条通讯录数据更新本地通讯录数据库中相应的通讯录数据;若通讯录数据中的状态值标识为被删除,则删除本地通讯录数据库中相应的通讯录数据。
在本实施例中,下载的通讯录数据中包含三种数据类型,分别是新增通讯录数据、更新通讯录数据和删除通讯录数据。在通讯录数据从服务器下载后,将这三种数据分别存放到三个数组中,再依次对三个数据分别进行数据库操作。例如,每条数据源都会有一个state标识,其中1代表新增数据,2代表更新数据,3代表删除数据,根据state标识,将三种数据分离。
在本实施例中,在进行通讯录数据的下载时,只下载state值有变化的通讯录数据,即当需要下载的通讯录数据确定后,将确定的通讯录数据中state值标识新增、更新和删除的通讯录数据下载下来,保证下载的效率,节省流量,减轻移动终端的压力,保证通讯录数据库的准确性。
在本发明的一个实施例中,在步骤S140的根据每条通讯录数据中的状态值,将下载的通讯录数据保存至本地通讯录数据库中之前,图1所示的方法进一步包括:根据本地通讯录数据库中已有的通讯录数据信息,判断下载的每条通讯录数据中的状态值是否准确;若不准确,则更改该条通讯录数据中的状态值。
为了防止数据源有问题,在本实施例中,在将下载的通讯录数据保存至本地通讯录数据库之间,先根据本地通讯录数据库中已有的通讯录数据信息,对下载的每条通讯录数据中的状态值进行校验,在不准确的情况下,更改通讯录数据中的状态值。例如,如果下载的通讯录数据中的state值为新增数据,但是本地通讯录数据库中已有该条数据,那么将下载的这条通讯录数据中的state值有新增标识改为更新标识;如果下载的通讯录数据中的state值为更新标识,但是本地通讯录数据中没有该数据,那么将state值由更新标识改为新增标识。这样,可以保证数据的准确性和完整性。
图2示出了根据本发明另一个实施例通讯录下载方法的流程示意图。如图2所示,该方法包括:
步骤S210,接收下载通讯录的指令。
步骤S220,使用GCD方法开启第一子线程异步下载通讯录的通讯录数据的总条数和各部门的信息。
步骤S230,判断下载结果,如果下载失败,则跳转至步骤S240,如果下载成功则进行步骤S250。
步骤S240,显示下载失败页面,设置可重新下载控件。
步骤S250,判断通讯录的通讯录数据的总条数是否大于阈值,如果否,执行步骤S260;如果是,执行步骤S270。根据通讯录数据总条数是否大于阈值的判断结果确定需要从服务器下载的通讯录数据。
步骤S260,使用Protocol Buffers技术,使用GCD方法开启第二子线程,从服务器异步下载全部通讯录数据的通讯录数据。步骤S270,从服务器异步下载本部门的通讯录数据。
本实施例中,开启第二子线程从服务器异步下载本部门的通讯录数据。
步骤S280,判断下载结果,如果下载失败,则执行步骤S240,如果下载成功,则执行步骤S290。
步骤S290,根据每条通讯录数据中的state值处理数据,将state值为1的放入新增组1,将state值为2的放入更新组2,将state值为3的放入删除组3。
步骤S211,使用事务处理逻辑,将三组通讯录数据依次保存至本地通讯录数据库。
步骤S212,通知通讯录页面刷新,从本地通讯录数据库中读取最新的通讯录数据。
步骤S213,在通讯录页面中显示最新的通讯录数据。
本例中,使用Protocol Buffers作为移动端适用的下载工具,支持移动端下载大数据,并使用事务,GCD等方法进行加固和强化,使得通讯录的大数据下载安全稳定,节省流量和时间。
图3示出了根据本发明一个实施例的通讯录下载装置的结构示意图。如图3所示,该通讯录下载装置300包括:
确定单元310,适于当接收到下载通讯录的指令时,开启第一子线程,使用第一子线程从服务器下载通讯录的基本信息,根据基本信息确定需要从服务器下载的通讯录数据。
本实施例主要是针对企业中的大型通讯录的下载。在本实施例中,用户会通过安装在移动终端上的通讯录应用程序完成对企业通讯录的下载,当用户启动应用程序后,会开启该应用程序的主线程,用户通过该主线程完成对本地通讯录数据的访问操作。
当用户通过上述的应用程序下载通讯录时,为了保证不影响主线程的操作和响应,需要开启一个子线程。
另外,企业通讯录中的通讯录数据比较多,而且用户需要的可能只是和自己工作内容有对接的其他用户的通讯录数据,如果将企业通讯录的通讯录数据全部进行下载,一方面会浪费较多的时间,另一方面,下载的通讯录数据未必全都是用户所需要的,因此,在本实施例中,首先开启第一子线程,从服务器下载通讯录的基本信息,根据基本信息确定需要下载的通讯录数据,避免下载时间的过度消耗,保证下载的通讯录数据对用户的可用性,增强用户的使用体验。
本实施例中的下载通讯录的指令,可以是用户自行输入的指令(如触发下载或更新通讯录的控件),也可以是以一定的频率(每隔1天)自行触发下载指令。
如果通讯录基本信息下载失败,则不会进行方法步骤S130中描述的“根据每条通讯录数据中的状态值,将下载的通讯录数据保存至本地通讯录数据库中”的处理,而是返回下载失败的信息,并设置重新下载的控件,以便用户重新下载通讯录。
下载单元320,适于开启第二子线程,使用第二子线程从服务器下载所确定的通讯录数据;每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值。
上述的第一子线程的任务是下载通讯录的基本信息,当确定好需要从服务器下载的通讯录数据后,则第一子线程的任务完成,为了确保下载过程中各任务之间不会相互影响,在本实施例中,进行通讯录数据的下载时,开启第二子线程,使用第二子线程下载所确定的通讯录数据。
保存单元330,适于根据每条通讯录数据中的状态值,将下载的通讯录数据保存至本地通讯录数据库中。
从服务器下载的每条通讯录数据中都包括该条通讯录数据的当前状态的状态值(即state值),当将下载的通讯录数据保存至本地通讯录数据库中时,根据每条通讯录数据的状态值进行保存。这里的状态值可以是表示通讯录数据是新增的状态的状态值、表示通讯录数据是更新的状态的状态值、表示通讯录数据是被删除的状态的状态值。例如,该条通讯录数据是新增(状态值为新增)的通讯录数据,则直接将该通讯录数据添加至本地通讯录数据库中即可,因为该状态值标识了该条通讯录数据的状态;该条通讯录数据是更新(状态值为更新)的通讯录数据,则将本地通讯录数据库中对应该条通讯录数据更新为该条通讯录数据;该条通讯录数据是更新(状态值为删除)的通讯录数据,则将本地通讯录数据库中对应该条通讯录数据进行删除的操作。这样,就保证了该条通讯录数据的准确性,进而在保存至本地通讯录数据库中时,可以保证本地通讯录数据库的准确性。
在本实施例中,下载通讯录的过程中,用户仍然可以使用主线程对本地通讯录数据库进行访问操作,当通讯录下载及保存成功后,会通过回调方法通知用户正在访问的通讯录页面进行刷新,从本地通讯录数据库中获取最新的通讯录数据加载到用户访问的通讯录页面中。
可见,通过本技术方案,使用子线程完成下载任务,不会防止和影响主线程的操作和响应,用户仍然可以通过主线程进行本地通讯录数据库的访问操作;每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值,根据该状态值将通讯录数据保存至本地通讯录数据库中,保证了通讯录数据的准确性以及本地通讯录数据库的准确定;同时,根据通讯录的基本信息确定需要下载的通讯录数据,避免下载时间的过度消耗,保证下载的通讯录数据对用户的可用性,增强用户的使用体验。
在本发明的一个实施例中,通讯录的基本信息包括通讯录中的通讯录数据的总条数和通讯录的分组信息。
确定单元310,适于判断通讯录中的通讯录数据的总条数是否不大于预设阈值,若判断为是,则将通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据,若判断为否,则根据所述通讯录的分组信息将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据。
在本实施例中,是根据预设的下载通讯录数据的条数阈值确定的,当下载服务器中的通讯录中包含的通讯录数据的总条数不大于预设阈值时,说明通讯录中的通讯录数据可以全部下载,则将通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据。当总条数大于预设阈值时,则可以只下载与用户有密切关系的通讯录数据即可,本实施例中是将该用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据。
因为本实施例是针对企业通讯录的下载,不同的用户所在的部门不一样,即在通讯录中的所属的分组不一样,用户进行通讯录下载时,是基于已经使用自身账号登录相应的应用程序的情况下进行的,则这里的用户对应的那组通讯录是指与当前进行下载任务的应用程序的登录账号所在的那一组通讯录,即用户所在的部门的其他用户的通讯录数据。
这里的预设阈值可以是系统自行设定,也可以是用户根据自身需求设定,例如,500。
例如,在企业中,用户A属于企业的市场部门,设定的预设阈值是500,在进行通讯录下载时,返回的通讯录的总条数是10000,大于预设阈值500,则只下载属于市场部门的通讯录数据。
需要说明的是,当将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据时,即使与用户对应的那组通讯录中的通讯录数据的条数也大于了预设阈值,则仍然是下载那组通讯录中的全部通讯录数据。
在上一个例子中,市场部门的通讯录数据的条数是600条,则仍然是将该市场部门的600条通讯录数据下载至用户A的本地通讯录数据库中。
在本发明的一个实施例中,将下载的通讯录的分组信息展示在移动终端的屏幕上,以便用户进行选择。
确定单元310,适于根据所述通讯录的分组信息将用户选择的指定组通讯录中的通讯录数据,确定为需要从服务器下载的通讯录数据;和/或,根据所述通讯录的分组信息用户选择的指定组中的指定通讯录数据,确定为需要从服务器下载的通讯录数据。
在本实施例中,用户在显示的选择界面中选择一个或多个指定组通讯录作为需要下载的。和/或,当用户选择一个指定组后,该指定组中的通讯录数据展开显示,用户可以选择该指定组通讯录下的一条或多条通讯录数据。
例如,市场部用户B选择运营部通讯录进行下载,和/或行政部的一条或多条通讯录数据进行下载。
这样,用户可以根据自己的意愿选择需要下载的通讯录数据,选择自己想要下着的通讯录数据,而自己不需要的通讯录数据就可以不选择,使得用户可以合理使用自己的通讯录存储空间,进一步增强用户的使用体验。
需要说明的是,上述的确定需要从服务器下载的通讯录数据的实施例可以分别单独实施,也可以结合实施。
例如,根据通讯录的总条数信息大于预设阈值,确定了将用户C对应的市场部通讯录的通讯录数据作为需要下载的通讯录数据,然后用户还可以选择财务部通讯录的通讯录数据作为需要下载的通讯录数据。
在本发明的一个实施例中,下载的通讯录的基本信息中还包括通讯录组与组之间的从属关系信息,以便用户根据该从属关系信息选择需要下载的通讯录信息,因为用户可以从组与组之间的从属关系中可以确定各组通讯录之间的关系,在进行选择需要下载的通讯录时,快速确定自己想要下载的通讯录数据,减少操作步骤,进一步增强用户的使用体验。
当上述的实施例应用在ios系统的移动终端中时,在本发明的一个实施例中,下载单元320,适于调用移动终端系统的GCD线程管理程序开启第二子线程;利用ProtocolBuffers技术,使用开启的所述第二子线程,从服务器下载所确定的通讯录数据。
GCD是苹果开发的一个多核编程的解决方法,简单易用,效率高,速度快,基于C语言,更底层更高效,并且不是Cocoa框架的一部分,自动管理线程生命周期(创建线程、调度任务、销毁线程)。使用GCD技术将所有的数据库操作放入到子线程中,不会对主线程的加载操作进行影响。当子线程结束之后在将操作结果返回到主线程中,保证主线程的安全性。
在本发明的一个实施例中,步骤S130中的开启第二子线程,使用第二子线程从服务器下载所确定的通讯录数据包括:调用移动终端系统的GCD线程管理程序开启第二子线程;利用Protocol Buffers技术,使用开启的第二子线程,从服务器下载所确定的通讯录数据。
这里的GCD线程管理程序详见上述说明。
在现有技术中,进行通讯录下载时,通常是采用JSOM数据串进行通讯录数据的传输,但是通讯录数据是比较私密的信息,使用JSON串传输容易泄露通讯录数据,会给通讯录数据的传输带来安全隐患;JSON的数据报文较长,大量的通讯录数据下载会导致大量的流量消耗,且容易出错,用户使用体验不好;同时大数据量的JSON串只要有一条数据有问题,可能会导致整个JSON串无法解析,同时大数据量频繁操作数据库会给移动终端很大的压力,同时容易产生崩溃问题。
Protocol Buffers(简称PB)是google的一种数据交换的格式,它独立于语言,独立于平台。google提供了多种语言的实现:java、c#、c++、go和python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用xml进行数据交换快。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很好的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
在本实施例中,采用Protocol Buffers技术下载。在这里,Protocol Buffers是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化,用于通讯协议、数据存储等领域中,与语言无关、平台无关、可扩展的序列化结构数据格式。服务器通过发送数据流,客户端只需要生成对应的pbuffer类,调用-(instancetype)initWithData:(NSData*)data error:(NSError**)errorPtr方法,就会自动将数据流转成model格式的数据源了。在进行Protocol Buffers数据流解析时,根据特定的方式进行解析即可,例如,用户进行通讯录数据下载时,调用-(instancetype)initWithData:(NSData*)data error:(NSError**)errorPtr方法,将需要下载的通讯录数据转成model格式的数据源,下载至用户本地时,将model格式的数据源进行对应的解析。相比较JSON技术,更为安全,不存在安全隐患。报文较短,大量的通讯录数据下载消耗的流量较少。一条数据有问题,不影响其他数据的解析,也不会给移动终端带来过大的压力,保证移动终端的稳定性。
在本发明的一个实施例中,保存单元330,适于将下载的通讯录数据作为一个操作序列,采用事务处理方式将下载的通讯录数据保存至通讯录数据库中。
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把这两者看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。因此,在本实施例中,在将下载的通讯录数据保存至数据库的时候,将下载的全部通讯录数据看做是一个操作序列,只有将全部的通讯录数据都保存完毕才算完成,保证了数据的完整性,也防止了垃圾数据带来的数据准确性问题。且在保存过程中,如果出现错误,则以保存的通讯录数据会恢复到保存前的状态,不会破坏数据库的原有数据。使用事务处理,能防止数据错误时的报错,也不会破坏原有数据,增强了系统的稳定性。
在本发明的一个实施例中,用于标识该条通讯录数据的当前状态的状态值包括:标识通讯录数据是新增的状态值;标识通讯录数据是更新的状态值;标识通讯录数据被删除的状态值。
保存单元330,适于若通讯录数据中的状态值标识为新增,则将该条通讯录数据增添至通讯录数据库中;若通讯录数据中的状态值标识为更新,则使用下载的该条通讯录数据更新通讯录数据库中相应的通讯录数据;若通讯录数据中的状态值标识为被删除,则删除通讯录数据库中相应的通讯录数据。
在本实施例中,下载的通讯录数据中包含三种数据类型,分别是新增通讯录数据、更新通讯录数据和删除通讯录数据。在通讯录数据从服务器下载后,将这三种数据分别存放到三个数组中,再依次对三个数据分别进行数据库操作。例如,每条数据源都会有一个state标识,其中1代表新增数据,2代表更新数据,3代表删除数据,根据state标识,将三种数据分离。
在本实施例中,在进行通讯录数据的下载时,只下载state值有变化的通讯录数据,即当需要下载的通讯录数据确定后,将确定的通讯录数据中state值标识新增、更新和删除的通讯录数据下载下来,保证下载的效率,节省流量,减轻移动终端的压力,保证通讯录数据库的准确性。
在本发明的一个实施例中,图3所示的装置进一步包括:判断单元,适于在根据每条通讯录数据中的状态值,将下载的通讯录数据保存至通讯录数据库中之前,根据通讯录数据库中已有的通讯录数据信息,判断下载的每条通讯录数据中的状态值是否准确;若不准确,则更改该条通讯录数据中的状态值。
为了防止数据源有问题,在本实施例中,在将下载的通讯录数据保存至本地通讯录数据库之间,先根据本地通讯录数据库中已有的通讯录数据信息,对下载的每条通讯录数据中的状态值进行校验,在不准确的情况下,更改通讯录数据中的状态值。例如,如果下载的通讯录数据中的state值为新增数据,但是本地通讯录数据库中已有该条数据,那么将下载的这条通讯录数据中的state值有新增标识改为更新标识;如果下载的通讯录数据中的state值为更新标识,但是本地通讯录数据中没有该数据,那么将state值由更新标识改为新增标识。这样,可以保证数据的准确性和完整性。
图4示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。如图4所示,该计算机可读存储介质400,存储一个或多个程序(程序代码)410,一个或多个程序(程序代码)410当被处理器执行时,用于执行根据本发明的方法步骤,即图1所示的以及其各实施例中的通讯录下载方法。
需要说明的是,图3所示的装置和图4所示的计算机可读存储介质的各实施例与图1所示的方法的各实施例对应相同,上文已有详细说明,在此不再赘述。
综上所述,根据本发明的技术方案,当接收到下载通讯录的指令时,开启第一子线程,使用第一子线程从服务器下载通讯录的基本信息,根据基本信息确定需要从服务器下载的通讯录数据;开启第二子线程,使用第二子线程从服务器下载所确定的通讯录数据;每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值;根据每条通讯录数据中的状态值,将下载的通讯录数据保存至本地通讯录数据库中。可见,在本技术方案中,使用子线程完成下载任务,不会防止和影响主线程的操作和响应,用户仍然可以通过主线程进行本地通讯录数据库的访问操作;同时,每条通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值,根据该状态值将通讯录数据保存至本地通讯录数据库中,保证了通讯录数据的准确性以及本地通讯录数据库的准确定,增强用户的使用体验。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将所述公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入所述具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与所述实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的通讯录下载装置和计算机可读存储介质中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应所述注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (10)

1.一种通讯录下载方法,其特征在于,所述方法包括:
当接收到下载通讯录的指令时,开启第一子线程,使用所述第一子线程从服务器下载所述通讯录的基本信息,根据所述基本信息确定需要从服务器下载的通讯录数据;
开启第二子线程,使用所述第二子线程从服务器下载所确定的所述通讯录数据;每条所述通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值;
根据每条所述通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中。
2.如权利要求1所述的方法,其特征在于,所述通讯录的基本信息包括所述通讯录中的通讯录数据的总条数和所述通讯录的分组信息;
所述根据所述基本信息确定需要从服务器下载的通讯录数据包括:
判断所述通讯录中的通讯录数据的总条数是否不大于预设阈值,
若判断为是,则将所述通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据,若判断为否,则根据所述通讯录的分组信息将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据;
和/或,
根据所述通讯录的分组信息将用户选择的指定组通讯录中的通讯录数据,确定为需要从服务器下载的通讯录数据;
和/或,
根据所述通讯录的分组信息将用户选择的指定组中的指定通讯录数据,确定为需要从服务器下载的通讯录数据。
3.如权利要求1所述的方法,其特征在于,所述开启第二子线程,使用所述第二子线程从服务器下载所确定的所述通讯录数据包括:调用移动终端系统的GCD线程管理程序开启第二子线程;利用Protocol Buffers技术,使用开启的所述第二子线程,从服务器下载所确定的所述通讯录数据;
所述将下载的通讯录数据保存至本地通讯录数据库中包括:将下载的通讯录数据作为一个操作序列,采用事务处理方式将下载的通讯录数据保存至通讯录数据库中。
4.如权利要求1所述的方法,其特征在于,所述用于标识该条通讯录数据的当前状态的状态值包括:标识通讯录数据是新增的状态值;标识通讯录数据是更新的状态值;标识通讯录数据被删除的状态值;
所述根据每条通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中包括:
若所述通讯录数据中的状态值标识为新增,则将该条通讯录数据增添至所述本地通讯录数据库中;
若所述通讯录数据中的状态值标识为更新,则使用下载的该条通讯录数据更新所述本地通讯录数据库中相应的通讯录数据;
若所述通讯录数据中的状态值标识为被删除,则删除所述本地通讯录数据库中相应的通讯录数据。
5.如权利要求1所述的方法,其特征在于,在所述根据每条所述通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中之前,所述方法进一步包括:
根据所述本地通讯录数据库中已有的通讯录数据信息,判断下载的每条通讯录数据中的状态值是否准确;若不准确,则更改该条通讯录数据中的状态值。
6.一种通讯录下载装置,其特征在于,所述装置包括:
确定单元,适于当接收到下载通讯录的指令时,开启第一子线程,使用所述第一子线程从服务器下载所述通讯录的基本信息,根据所述基本信息确定需要从服务器下载的通讯录数据;
下载单元,适于开启第二子线程,使用所述第二子线程从服务器下载所确定的所述通讯录数据;每条所述通讯录数据中包括用于标识该条通讯录数据的当前状态的状态值;
保存单元,适于根据每条所述通讯录数据中的状态值,将下载的通讯录数据保存至所述本地通讯录数据库中。
7.如权利要求6所述的装置,其特征在于,所述通讯录的基本信息包括所述通讯录中的通讯录数据的总条数和所述通讯录的分组信息;
所述确定单元,适于判断所述通讯录中的通讯录数据的总条数是否不大于预设阈值,若判断为是,则将所述通讯录中的所有通讯录数据确定为需要从服务器下载的通讯录数据,若判断为否,则根据所述通讯录的分组信息将与用户对应的那组通讯录中的通讯录数据确定为需要从服务器下载的通讯录数据;
和/或,
根据所述通讯录的分组信息将用户选择的指定组通讯录中的通讯录数据,确定为需要从服务器下载的通讯录数据;和/或,根据所述通讯录的分组信息用户选择的指定组中的指定通讯录数据,确定为需要从服务器下载的通讯录数据。
8.如权利要求6所述的装置,其特征在于,所述用于标识该条通讯录数据的当前状态的状态值包括:标识通讯录数据是新增的状态值;标识通讯录数据是更新的状态值;标识通讯录数据被删除的状态值;
所述保存单元,适于若所述通讯录数据中的状态值标识为新增,则将该条通讯录数据增添至通讯录数据库中;
若所述通讯录数据中的状态值标识为更新,则使用下载的该条通讯录数据更新通讯录数据库中相应的通讯录数据;
若所述通讯录数据中的状态值标识为被删除,则删除通讯录数据库中相应的通讯录数据。
9.如权利要求6所述的装置,其特征在于,所述装置进一步包括:
判断单元,适于在所述根据每条所述通讯录数据中的状态值,将下载的通讯录数据保存至通讯录数据库中之前,根据通讯录数据库中已有的通讯录数据信息,判断下载的每条通讯录数据中的状态值是否准确;若不准确,则更改该条通讯录数据中的状态值。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现权利要求1-5中任一项所述的方法。
CN201711480962.1A 2017-12-29 2017-12-29 一种通讯录下载方法、装置和计算机可读存储介质 Pending CN110019241A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711480962.1A CN110019241A (zh) 2017-12-29 2017-12-29 一种通讯录下载方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711480962.1A CN110019241A (zh) 2017-12-29 2017-12-29 一种通讯录下载方法、装置和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN110019241A true CN110019241A (zh) 2019-07-16

Family

ID=67187183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711480962.1A Pending CN110019241A (zh) 2017-12-29 2017-12-29 一种通讯录下载方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110019241A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103686639A (zh) * 2013-12-04 2014-03-26 华为技术有限公司 消息处理方法、装置及系统
CN104539655A (zh) * 2014-12-05 2015-04-22 蓝信工场(北京)科技有限公司 一种通讯录分批同步和显示的方法和系统
CN105847336A (zh) * 2016-03-18 2016-08-10 周奇 一种通讯录同步方法及装置
US9449064B2 (en) * 2014-05-03 2016-09-20 Pinplanet Corporation System and method for dynamic and secure communication and synchronization of personal data records

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103686639A (zh) * 2013-12-04 2014-03-26 华为技术有限公司 消息处理方法、装置及系统
US9449064B2 (en) * 2014-05-03 2016-09-20 Pinplanet Corporation System and method for dynamic and secure communication and synchronization of personal data records
CN104539655A (zh) * 2014-12-05 2015-04-22 蓝信工场(北京)科技有限公司 一种通讯录分批同步和显示的方法和系统
CN105847336A (zh) * 2016-03-18 2016-08-10 周奇 一种通讯录同步方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AFINALDREAM: "Android-listview实现多级树列表(文件夹目录结构和企业级通讯录结构)", 《简书》 *
秦建平: "《Android编程宝典》", 31 March 2013, 北京航空航天大学出版社 *

Similar Documents

Publication Publication Date Title
KR101862235B1 (ko) 사용자 인터페이스 요소 지정
CN105511873B (zh) 用户界面控件展示方法及装置
US7984115B2 (en) Extensible application platform
US10146668B1 (en) Modeling code coverage in software life cycle
CN112765023B (zh) 测试用例生成方法、装置
CN107710215A (zh) 在测试设施中的移动计算装置安全的方法和设备
CN107704241B (zh) 一种页面状态切换的显示方法和装置
CN111737609B (zh) 一种web系统菜单栏的展示方法、终端及存储介质
Whiting et al. Creating an iPhone application for collecting continuous ABC data
WO2015096661A1 (zh) 基于配置系统的项目创建方法及装置、项目测试方法及装置、配置系统的后台测试方法及装置
EP2965492B1 (en) Selection of data storage settings for an application
CN109492181A (zh) 页面跳转方法、装置、计算机设备和存储介质
CN111538659B (zh) 业务场景的接口测试方法、系统、电子设备和存储介质
CN107403110A (zh) Hdfs数据脱敏方法及装置
CN114281653B (zh) 应用程序的监控方法、装置及计算设备
WO2022012305A1 (zh) 推理应用中模型文件的管理方法及装置
CN106095486A (zh) 应用程序的在线更新方法、系统、终端设备及服务器
CN108509460A (zh) 分布式系统中的数据一致性检查
CN110019241A (zh) 一种通讯录下载方法、装置和计算机可读存储介质
CN114860202A (zh) 项目运行方法、装置、服务器及存储介质
CN107844360A (zh) 一种硬盘执行应用代码的方法及装置
CN108062224A (zh) 基于文件句柄的数据读写方法、装置及计算设备
CN114756362A (zh) 资源配额管理方法及系统、智能终端、存储介质
US20030037175A1 (en) Import/export utility and a method of processing data using the same
US20200201609A1 (en) Metadata-Driven Design-Time Tooling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080

Applicant after: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd.

Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A Room 601

Applicant before: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd.

CB02 Change of applicant information
RJ01 Rejection of invention patent application after publication

Application publication date: 20190716

RJ01 Rejection of invention patent application after publication