CN105354073A - 一种基于安卓系统的单机应用网络化方法和系统 - Google Patents

一种基于安卓系统的单机应用网络化方法和系统 Download PDF

Info

Publication number
CN105354073A
CN105354073A CN201510704583.0A CN201510704583A CN105354073A CN 105354073 A CN105354073 A CN 105354073A CN 201510704583 A CN201510704583 A CN 201510704583A CN 105354073 A CN105354073 A CN 105354073A
Authority
CN
China
Prior art keywords
class
contentprovider
data
sqliteopenhelper
upd
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.)
Granted
Application number
CN201510704583.0A
Other languages
English (en)
Other versions
CN105354073B (zh
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.)
CHINACCS INFORMATION INDUSTRY Co Ltd
Original Assignee
CHINACCS INFORMATION INDUSTRY 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 CHINACCS INFORMATION INDUSTRY Co Ltd filed Critical CHINACCS INFORMATION INDUSTRY Co Ltd
Priority to CN201510704583.0A priority Critical patent/CN105354073B/zh
Publication of CN105354073A publication Critical patent/CN105354073A/zh
Application granted granted Critical
Publication of CN105354073B publication Critical patent/CN105354073B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提出了一种基于安卓系统的单机应用程序快速网络化方法和系统,所述方法包括:为单机版应用程序的ContentProvider代码段的每一个ContentProvider类添加ContentProvider注解,所述ContentProvider注解包括以下参数:指定生成的ContentProvider代理类名称、数据URI参数、对应的数据处理器类名列表;其中所述新生成的ContentProvider代理类名称用于标示生成的代码的类名称;所述数据URI参数包括新生成的ContentProvider类中需要处理的数据URI;所述对应的数据处理器类名列表用于指定自动生成的ContentProvider类在处理所述数据URI时对应调用的数据处理器类;在单机版应用程序的SQLiteOpenHelper代码段的每一个SQLiteOpenHelper类添加SQLiteOpenHelper注解,所述SQLiteOpenHelper注解参数包括指定生成的SQLiteOpenHelper代理类名称、要处理的数据表的名称;为单机版应用程序的配置文件中,将原ContentProvider类名配置为上述注解配置的ContentProvider代理类名;根据数据处理器接口,实现数据处理器的实现类,实现请本地数据请求转发至服务端进行处理并返回相应的结果。

Description

一种基于安卓系统的单机应用网络化方法和系统
技术领域
本发明涉及移动终端技术领域,具体涉及一种基于安卓系统的单机应用程序快速网络化方法和系统。
背景技术
安卓系统已经成为全球范围内使用广泛的移动操作系统之一。而随着移动互联网技术的发展,越来越多的单机版应用开始迁移成为网络版应用。现有技术中要想将单机版应用程序迁移成网络版应用程序,就需要对单机版应用程序的数据操作部分以及相关的逻辑代码都进行重写,以将访问本地数据的代码完全修改为请求应用服务器数据的代码。这种技术需要对原单机版应用的部分核心代码进行修改,消耗大量时间。同时如果修改单机版应用程序的核心代码可能导致整个程序出现运行流程逻辑不正确的问题。由此可见现有技术的方法过程繁琐且易于出错。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于安卓系统的单机应用程序快速网络化方法和系统,使得将使用基于ContentProvider组件的单机版应用程序升级为网络版应用程序的过程变得容易且不会产生逻辑错误。
为达到上述目的,本发明实施例提出了一种基于安卓系统的单机应用程序快速网络化方法,包括:
步骤S1、为单机版应用程序的ContentProvider代码段的每一个ContentProvider类添加ContentProvider注解,所述ContentProvider注解包括以下参数:指定生成的ContentProvider代理类名称、数据URI参数、对应的数据处理器类名列表;其中所述新生成的ContentProvider代理类名称用于标示生成的代码的类名称;所述数据URI参数包括新生成的ContentProvider类中需要处理的数据URI;所述对应的数据处理器类名列表用于指定自动生成的ContentProvider类在处理所述数据URI时对应调用的数据处理器类;
步骤S2、在单机版应用程序的SQLiteOpenHelper代码段的每一个SQLiteOpenHelper类添加SQLiteOpenHelper注解;所述SQLiteOpenHelper注解至少包括以下参数:要生成的SQLiteOpenHelper代理类、要处理的数据表的名称;
步骤S3、在单机版应用程序的配置文件中,将原ContentProvider类名配置改为新生成的ContentProvider代理类名;
步骤S4、根据数据处理器的接口实现数据处理器的实现类,该实现类用于将本地数据请求转发至服务端进行处理并返回相应的结果。
其中,所述步骤S1还包括:
步骤S11、在编译单机版应用程序时,注解处理器通过该ContentProvider注解的配置,生成一份代理类继承自注解标注的ContentProvider类;
步骤S12、在上述步骤生成的代理类处理insert、update、delete、query接口方法时,依次判断操作的数据URI是否存在于注解配置的要处理数据URI列表中;如果是则实例化对应的数据处理器类;
步骤S13、根据代理类所要处理的insert、update、delete、query接口方法,调用数据处理器实例中相应的处理方法处理数据,并将处理结果按照ContentProvider的规则,增加_sid、upd_time、sync_time、is_del、is_upd字段后,调用单机版应用程序的ContentProvider处理方法;
其中,
_sid字段用于在客户端数据库中存储对应数据在服务端上的id值;
upd_time字段用于存储该记录最后修改的时间;
sync_time字段用于存储该记录最后与服务端同步的时间;
is_del字段用于标记该记录是否在客户端已经被删除;
is_upd字段用于标记该记录是否在客户端已经被修改。
其中,所述步骤S1还包括:对ContentProvider类的insert、update、delete、query方法进行重载以生成代码;
具体包括:
步骤S101、依次判断正在请求的数据URI是否存在于注解配置的要处理数据URI列表中;
步骤S102、如果操作的数据URI存在于注解配置的要处理数据URI列表中,判断对应的数据处理器类是否已经初始化;
步骤S103、如果对应的数据处理器类未初始化,则初始化对应的数据处理器类,否则直接执行步骤S104;
步骤S104、调用初始化后的数据处理器实例中对应的insert、update、delete、query方法,进行在线数据处理;
步骤S105、数据处理后,由对应的insert、update、delete、query方法返回的执行结果,封装对应数据,并调用父类对应的insert、update、delete、query方法将数据保存至本地;
步骤S106、将S104返回的数据返回给调用的代码。
其中,所述步骤S2具体包括:编译时该注解处理器将生成一份临时类继承自注解标注的SQLiteOpenHelper类;其中,在生成的SQLiteOpenHelper类的onCreate和onUpgrade两个方法中,通过ContentProvider注解中的参数为对应的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段;具体为:
步骤S21、编译时该注解处理器将生成一份代理类继承自注解标注的SQLiteOpenHelper类上;
步骤S22、在代理类的onCreate和onUpgrade两个方法中,通过注解参数中的配置列表,为指定的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段。
其中,所述步骤S22具体包括:
步骤S221、在编译时拦截onCreate方法,调用父类onCreate方法创建基础表结构;
步骤S222、根据SQLiteOpenHelper注解中的配置数据,判断对应于onCreate方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则跳转到步骤S204;如果否则跳转到步骤S203;
步骤S223、在对应于onCreate方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段;
步骤S224、在编译时拦截onUpgrade方法,调用父类onUpgrade方法创建基础表结构;
步骤S225、根据SQLiteOpenHelper注解中的配置数据,判断对应于onUpgrade方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则步骤结束;如果否则跳转到步骤S226;
步骤S226、在对应于onUpgrade方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段。
同时,本发明实施例还提出了一种基于安卓系统的单机应用程序快速网络化系统,包括:
ContentProvider注解模块,用于标注需要处理的ContentProvider类以及存储的配置数据;
ContentProvider注解处理模块,用于编译添加了ContentProvider注解的ContentProvider类以及通过ContentProvider注解中的参数、ContentProvider代码模板生成ContentProvider代理类;
ContentProvider代码模板,用于辅助ContentProvider注解处理模块在编译时通过处理所述ContentProvider注解,以根据ContentProvider注解中的参数动态生成临时代码;
ContentProvider代理类,用于按照本发明所述方法对基于安卓系统的单机应用网络化过程实现的代理类;
SQLiteOpenHelper注解模块,用于标注需要处理的SQLiteOpenHelper类,以及提供配置数据的存储位置,所述SQLiteOpenHelper注解至少包括以下参数:要生成的SQLiteOpenHelper代理类、要处理的数据表的名称;
SQLiteOpenHelper注解处理模块,用于编译添加了SQLiteOpenHelper注解的SQLiteOpenHelper类以及通过SQLiteOpenHelper注解中的参数、SQLiteOpenHelper代码模板生成SQLiteOpenHelper代理类;
SQLiteOpenHelper代码模板,用于辅助SQLiteOpenHelper注解处理模块在编译时通过处理所述SQLiteOpenHelper注解,以根据SQLiteOpenHelper注解中的参数及预先设置的代码模板动态生成临时代码;
SQLiteOpenHelper代理类,用于按照本发明所述方法对基于安卓系统的单机应用网络化过程实现的代理类;
中央处理器,用于在单机版应用程序的配置文件中,将原ContentProvider类名配置改为新生成的ContentProvider代理类名;并用于根据数据处理器的接口实现数据处理器的实现类,该实现类用于将本地数据请求转发至服务端进行处理并返回相应的结果。
其中,所述ContentProvider注解处理模块执行以下操作:
步骤S11、在编译该ContentProvider注解时,生成一份代理类继承自注解标注的ContentProvider类;
步骤S12、在代理类处理insert、update、delete、query接口方法时,依次判断操作的数据URI是否存在于注解配置的要处理数据URI列表中;如果是则实例化对应的数据处理器类;
步骤S13、根据代理类所要处理的insert、update、delete、query接口方法,调用数据处理器实例中相应的处理方法处理数据,并将处理结果按照ContentProvider的规则,增加_sid、upd_time、sync_time、is_del、is_upd字段后,调用单机版应用程序的ContentProvider处理方法;
其中,
_sid字段用于在客户端数据库中存储对应数据在服务端上的id值;
upd_time字段用于存储该记录最后修改的时间;
sync_time字段用于存储该记录最后与服务端同步的时间;
is_del字段用于标记该记录是否在客户端已经被删除;
is_upd字段用于标记该记录是否在客户端已经被修改。
其中,所述ContentProvider代码模板执行以下操作:对ContentProvider类的insert、update、delete、query方法进行重载以生成代码;
具体包括:
步骤S101、依次判断正在请求的数据URI是否存在于注解配置的要处理数据URI列表中;
步骤S102、如果操作的数据URI存在于注解配置的要处理数据URI列表中,判断对应的数据处理器类是否已经初始化;
步骤S103、如果对应的数据处理器类未初始化,则初始化对应的数据处理器类,否则直接执行步骤S104;
步骤S104、调用初始化后的数据处理器实例中对应的insert、update、delete、query方法,进行在线数据处理;
步骤S105、数据处理后,由对应的insert、update、delete、query方法返回的执行结果,封装对应数据,并调用父类对应的insert、update、delete、query方法将数据保存至本地;
步骤S106、将S104返回的数据返回给调用的代码。
其中,所述SQLiteOpenHelper代码模板执行以下操作:编译时该注解处理器将生成一份临时类继承自注解标注的SQLiteOpenHelper类;其中,在生成的SQLiteOpenHelper类的onCreate和onUpgrade两个方法中,通过SQLiteOpenHelper注解中的参数为对应的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段;具体为:
步骤S21、编译时该注解处理器将生成一份代理类继承自注解标注的SQLiteOpenHelper类上;
步骤S22、在代理类的onCreate和onUpgrade两个方法中,通过注解参数中的配置列表,为指定的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段。
其中,所述步骤S22具体包括:
步骤S221、在编译时拦截onCreate方法,调用父类onCreate方法创建基础表结构;
步骤S222、根据SQLiteOpenHelper注解中的配置数据,判断对应于onCreate方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则跳转到步骤S204;如果否则跳转到步骤S203;
步骤S223、在对应于onCreate方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段;
步骤S224、在编译时拦截onUpgrade方法,调用父类onUpgrade方法创建基础表结构;
步骤S225、根据SQLiteOpenHelper注解中的配置数据,判断对应于onUpgrade方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则步骤结束;如果否则跳转到步骤S226;
步骤S226、在对应于onUpgrade方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段。
本发明实施例的有益效果为:
本发明实施例提出了一种基于JAVA编译器的方法和系统,通过生成静态代码的方式完成对所述单机版应用程序的网络化迁移,且编译后的目标代码不再产生额外的处理流程。因此,本发明所述方法能够不影响基于安卓系统的单机应用网络化后的逻辑处理时间。
附图说明
图1为基于Java注解处理器的注解处理方法流程;
图2为ContentProvider注解的编译时处理方法流程;
图3为ContentProvider代码模板代码处理方法流程;
图4为SQLiteOpenHelper注解的编译时处理方法流程;
图5为SQLiteOpenHelper代码模板代码处理方法流程;
图6为基于Java注解处理和安卓系统的自动化编码系统。
具体实施方式
本发明的核心思想是:通过JAVA编译过程中的注解处理器对标注的注解进行处理,在处理过程中,通过代码模板和配置动态生成对应的代理类,代理类中将数据访问请求转换为网络操作,从而完成本专利所要达到的目的。
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。
本发明实施例提出的基于安卓系统的单机应用程序快速网络化方法,其流程如图1所示的,包括:
步骤S1、为单机版应用程序的ContentProvider代码段的每一个ContentProvider类添加ContentProvider注解以指定生成的ContentProvider代理类名称、数据URI参数、对应的数据处理器类名列表;其中所述新生成的ContentProvider代理类名称用于标示生成的代码的类名称;所述数据URI参数包括新生成的ContentProvider类中需要处理的数据URI;所述对应的数据处理器类名列表用于指定自动生成的ContentProvider类在处理所述数据URI时对应调用的数据处理器类;
步骤S2、在单机版应用程序的SQLiteOpenHelper代码段中根据所述SQLiteOpenHelper注解中的参数添加SQLiteOpenHelper注解以指定要处理的数据表的名称;
S3、在单机版应用程序的配置文件AndroidManifest.xml中,将原ContentProvider类名配置改为新生成的ContentProvider代理类名;
S4、根据数据处理器的接口实现数据处理器的实现类,该实现类用于将本地数据请求转发至服务端进行处理并返回相应的结果。
具体的,该ContentProvider注解可以具体为:
OnlineContentProvider(clazz=”NewOnlineContentProvider”,dataUri={Provider.DATA1_URI,Provider.DATA2_URI},dataProcessor={Data1Processor.class,Data2Processor.class})
publicclassOldContentProviderextendsContentProvider{
}
其中,
clazz=”NewOnlineContentProvider”为新生成的ContentProvider代理类名称;
dataUri={Provider.DATA1_URI,Provider.DATA2_URI}为新生成的ContentProvider代理类名称对应的需要处理的数据URI参数;
dataProcessor={Data1Processor.class,Data2Processor.class}为该数据URI参数中的每个数据对应的数据处理器类名列表。
与前述方法相似的,可以为SQLiteOpenHelper添加注解。
如图2所示的,在对通过步骤S1获得的ContentProvider注解进行编译时,执行以下操作:
步骤S11、在编译单机版应用程序时,注解处理器通过该ContentProvider注解的配置,生成一份代理类继承自注解标注的ContentProvider类;
步骤S12、在上述步骤生成的代理类处理insert、update、delete、query接口方法时,依次判断操作的数据URI是否存在于注解配置的要处理数据URI列表中;如果是则实例化对应的数据处理器类;
步骤S13、如果操作的数据URI存在于注解配置的要处理数据URI列表中,则实例化对应的数据处理器类;
步骤S14、根据代理类所要处理的insert、update、delete、query接口方法,调用数据处理器实例中相应的处理方法处理数据,并将处理结果按照ContentProvider的规则,增加_sid、upd_time、sync_time、is_del、is_upd字段后,调用原ContentProvider处理方法。
如图3,在ContentProvider代码模板代码处理方法中,分别对ContentProvider类的insert、update、delete、query方法进行重载,系统在调用相应数据操作时,会先调用本发明所述方法生成的静态代码,在insert、update、delete、query方法处理中,均采用如下方法:
步骤S31、依次判断正在请求的数据URI是否存在于注解配置的要处理数据URI列表中;
步骤S32、如果操作的数据URI存在于注解配置的要处理数据URI列表中,判断对应的数据处理器类是否已经初始化;
步骤S33、如果对应的数据处理器类未初始化,则初始化对应的数据处理器类,否则直接执行步骤S34;
步骤S34、调用初始化后的数据处理器实例中对应的insert、update、delete、query方法,进行在线数据处理;
步骤S35、数据处理后,由对应的insert、update、delete、query方法返回的执行结果,封装对应数据,并调用父类对应的insert、update、delete、query方法将数据保存至本地;
步骤S36、将步骤S34返回的数据返回给调用的代码。
如图4所示的,在对步骤S2获得的SQLiteOpenHelper注解进行编译时,执行以下步骤:
步骤S21、编译时该注解处理器将生成一份代理类继承自注解标注的SQLiteOpenHelper类上;
步骤S22、在代理类的onCreate和onUpgrade两个方法中,通过注解参数中的配置列表,为指定的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段。
如图5所示的,其中步骤S22具体包括:
步骤S501、在编译时拦截onCreate方法,调用父类onCreate方法创建基础表结构;
步骤S502、根据SQLiteOpenHelper注解中的配置数据,判断对应于onCreate方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则跳转到步骤S204;如果否则跳转到步骤S203;
步骤S503、在对应于onCreate方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段;
步骤S504、在编译时拦截onUpgrade方法,调用父类onUpgrade方法创建基础表结构;
步骤S505、根据SQLiteOpenHelper注解中的配置数据,判断对应于onUpgrade方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则步骤结束;如果否则跳转到步骤S506;
步骤S506、在对应于onUpgrade方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段。
为实现本发明的另一个目的,本发明还提供一种基于Java注解处理和安卓系统的自动化编码系统,用于在安卓系统中实现单机应用网络化方法,该系统应用于编译安卓程序的设备上,如图6所示,所述设备至少包括有CPU、内存、非易失性存储器、显示屏、I/O接口等硬件。所述系统通过该设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行,使所述系统还包括ContentProvider注解模块[S601]、ContentProvider注解处理模块[S602]、ContentProvider代码模板[S603]、SQLiteOpenHelper注解模块[S604]、SQLiteOpenHelper注解处理模块[S605]、SQLiteOpenHelper代码模板[S606]。通过所述模块,该设备在编译安卓程序时会生成ContentProvider代理类[S607]和SQLiteOpenHelper代理类[S608],所述ContentProvider代理类[S607]和SQLiteOpenHelper代理类[S608]由安卓程序编译器编译到安卓程序中。
ContentProvider注解模块[S601],用于标注需要处理的ContentProvider类,以及提供配置数据的存储位置;
ContentProvider注解处理模块[S602],用于处理标注了ContentProvider注解模块的ContentProvider类以及ContentProvider注解模块中存储的配置数据;
ContentProvider代码模板[S603],用于帮助ContentProvider注解处理模块生成实现本发明所述方法的代码逻辑;
SQLiteOpenHelper注解模块[S604],用于标注需要处理的SQLiteOpenHelper类,以及提供配置数据的存储位置;
SQLiteOpenHelper注解处理模块[S605],用于处理标注了SQLiteOpenHelper注解模块的SQLiteOpenHelper类以及SQLiteOpenHelper注解模块中存储的配置数据;
SQLiteOpenHelper代码模板[S606],用于帮助SQLiteOpenHelper注解处理模块生成实现本发明所述方法的代码逻辑
ContentProvider代理类[S607],用于按照本发明所述方法对基于安卓系统的单机应用网络化过程实现的代理类;
SQLiteOpenHelper代理类[S608],用于按照本发明所述方法对基于安卓系统的单机应用网络化过程实现的代理类。
ContentProvider代理类和SQLiteOpenHelper代理类参与基于安卓系统的应用程序编译过程,最终会成为基于安卓系统的应用程序的一部分。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种基于安卓系统的单机应用程序快速网络化方法,其特征在于,包括:
步骤S1、为单机版应用程序的ContentProvider代码段的每一个ContentProvider类添加ContentProvider注解,所述ContentProvider注解包括以下参数:指定生成的ContentProvider代理类名称、数据URI参数、对应的数据处理器类名列表;其中所述新生成的ContentProvider代理类名称用于标示生成的代码的类名称;所述数据URI参数包括新生成的ContentProvider类中需要处理的数据URI;所述对应的数据处理器类名列表用于指定自动生成的ContentProvider类在处理所述数据URI时对应调用的数据处理器类;
步骤S2、在单机版应用程序的SQLiteOpenHelper代码段的每一个SQLiteOpenHelper类添加SQLiteOpenHelper注解,所述SQLiteOpenHelper注解至少包括以下参数:要生成的SQLiteOpenHelper代理类、要处理的数据表的名称;
步骤S3、在单机版应用程序的配置文件中,将原ContentProvider类名配置改为新生成的ContentProvider代理类名;
步骤S4、根据数据处理器的接口实现数据处理器的实现类,该实现类用于将本地数据请求转发至服务端进行处理并返回相应的结果。
2.根据权利要求1所述的基于安卓系统的单机应用程序快速网络化方法,其特征在于,所述步骤S1还包括:
步骤S11、在编译单机版应用程序时,注解处理器通过该ContentProvider注解的配置,生成一份代理类继承自注解标注的ContentProvider类;
步骤S12、在上述步骤生成的代理类处理insert、update、delete、query接口方法时,依次判断操作的数据URI是否存在于注解配置的要处理数据URI列表中;如果是则实例化对应的数据处理器类;
步骤S13、根据代理类所要处理的insert、update、delete、query接口方法,调用数据处理器实例中相应的处理方法处理数据,并将处理结果按照ContentProvider的规则,增加_sid、upd_time、sync_time、is_del、is_upd字段后,调用单机版应用程序的ContentProvider处理方法;
其中,
_sid字段用于在客户端数据库中存储对应数据在服务端上的id值;
upd_time字段用于存储该记录最后修改的时间;
sync_time字段用于存储该记录最后与服务端同步的时间;
is_del字段用于标记该记录是否在客户端已经被删除;
is_upd字段用于标记该记录是否在客户端已经被修改。
3.根据权利要求2所述的基于安卓系统的单机应用程序快速网络化方法,其特征在于,所述步骤S1还包括:对ContentProvider类的insert、update、delete、query方法进行重载以生成代码;
具体包括:
步骤S101、依次判断正在请求的数据URI是否存在于注解配置的要处理数据URI列表中;
步骤S102、如果操作的数据URI存在于注解配置的要处理数据URI列表中,判断对应的数据处理器类是否已经初始化;
步骤S103、如果对应的数据处理器类未初始化,则初始化对应的数据处理器类,否则直接执行步骤S104;
步骤S104、调用初始化后的数据处理器实例中对应的insert、update、delete、query方法,进行在线数据处理;
步骤S105、数据处理后,由对应的insert、update、delete、query方法返回的执行结果,封装对应数据,并调用父类对应的insert、update、delete、query方法将数据保存至本地;
步骤S106、将S104返回的数据返回给调用的代码。
4.根据权利要求1所述的基于安卓系统的单机应用程序快速网络化方法,其特征在于,所述步骤S2具体包括:编译时该注解处理器将生成一份临时类继承自注解标注的SQLiteOpenHelper类;其中,在生成的SQLiteOpenHelper类的onCreate和onUpgrade两个方法中,通过ContentProvider注解中的参数为对应的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段;具体为:
步骤S21、编译时该注解处理器将生成一份代理类继承自注解标注的SQLiteOpenHelper类上;
步骤S22、在代理类的onCreate和onUpgrade两个方法中,通过注解参数中的配置列表,为指定的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段。
5.根据权利要求4所述的基于安卓系统的单机应用程序快速网络化方法,其特征在于,所述步骤S22具体包括:
步骤S221、在编译时重载onCreate方法,调用父类onCreate方法创建基础表结构;
步骤S222、根据SQLiteOpenHelper注解中的配置数据,判断对应于onCreate方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则跳转到步骤S204;如果否则跳转到步骤S203;
步骤S223、在对应于onCreate方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段;
步骤S224、在编译时拦截onUpgrade方法,调用父类onUpgrade方法创建基础表结构;
步骤S225、根据SQLiteOpenHelper注解中的配置数据,判断对应于onUpgrade方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则步骤结束;如果否则跳转到步骤S226;
步骤S226、在对应于onUpgrade方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段。
6.一种基于安卓系统的单机应用程序快速网络化系统,其特征在于,包括:
ContentProvider注解模块,用于标注需要处理的ContentProvider类以及存储的配置数据;
ContentProvider注解处理模块,用于编译添加了ContentProvider注解的ContentProvider类以及通过ContentProvider注解中的参数、ContentProvider代码模板生成ContentProvider代理类;
ContentProvider代码模板,用于辅助ContentProvider注解处理模块在编译时通过处理所述ContentProvider注解,以根据ContentProvider注解中的参数动态生成临时代码;
ContentProvider代理类,用于按照本发明所述方法对基于安卓系统的单机应用网络化过程实现的代理类;
SQLiteOpenHelper注解模块,用于标注需要处理的SQLiteOpenHelper类,以及提供配置数据的存储位置,所述SQLiteOpenHelper注解至少包括以下参数:要生成的SQLiteOpenHelper代理类、要处理的数据表的名称;
SQLiteOpenHelper注解处理模块,用于编译添加了SQLiteOpenHelper注解的SQLiteOpenHelper类以及通过SQLiteOpenHelper注解中的参数、SQLiteOpenHelper代码模板生成SQLiteOpenHelper代理类;
SQLiteOpenHelper代码模板,用于辅助SQLiteOpenHelper注解处理模块在编译时通过处理所述SQLiteOpenHelper注解,以根据SQLiteOpenHelper注解中的参数及预先设置的代码模板动态生成临时代码;
SQLiteOpenHelper代理类,用于按照本发明所述方法对基于安卓系统的单机应用网络化过程实现的代理类;
中央处理器,用于在单机版应用程序的配置文件中,将原ContentProvider类名配置改为新生成的ContentProvider代理类名;并用于根据数据处理器的接口实现数据处理器的实现类,该实现类用于将本地数据请求转发至服务端进行处理并返回相应的结果。
7.根据权利要求6所述的基于安卓系统的单机应用程序快速网络化系统,其特征在于,所述ContentProvider注解处理模块执行以下操作:
步骤S11、在编译该ContentProvider注解时,生成一份代理类继承自注解标注的ContentProvider类;
步骤S12、在代理类处理insert、update、delete、query接口方法时,依次判断操作的数据URI是否存在于注解配置的要处理数据URI列表中;如果是则实例化对应的数据处理器类;
步骤S13、根据代理类所要处理的insert、update、delete、query接口方法,调用数据处理器实例中相应的处理方法处理数据,并将处理结果按照ContentProvider的规则,增加_sid、upd_time、sync_time、is_del、is_upd字段后,调用单机版应用程序的ContentProvider处理方法;
其中,
_sid字段用于在客户端数据库中存储对应数据在服务端上的id值;
upd_time字段用于存储该记录最后修改的时间;
sync_time字段用于存储该记录最后与服务端同步的时间;
is_del字段用于标记该记录是否在客户端已经被删除;
is_upd字段用于标记该记录是否在客户端已经被修改。
8.根据权利要求6所述的基于安卓系统的单机应用程序快速网络化系统,其特征在于,所述ContentProvider代码模板执行以下操作:对ContentProvider类的insert、update、delete、query方法进行重载以生成代码;
具体包括:
步骤S101、依次判断正在请求的数据URI是否存在于注解配置的要处理数据URI列表中;
步骤S102、如果操作的数据URI存在于注解配置的要处理数据URI列表中,判断对应的数据处理器类是否已经初始化;
步骤S103、如果对应的数据处理器类未初始化,则初始化对应的数据处理器类,否则直接执行步骤S104;
步骤S104、调用初始化后的数据处理器实例中对应的insert、update、delete、query方法,进行在线数据处理;
步骤S105、数据处理后,由对应的insert、update、delete、query方法返回的执行结果,封装对应数据,并调用父类对应的insert、update、delete、query方法将数据保存至本地;
步骤S106、将S104返回的数据返回给调用的代码。
9.根据权利要求6所述的基于安卓系统的单机应用程序快速网络化系统,其特征在于,所述SQLiteOpenHelper代码模板执行以下操作:编译时该注解处理器将生成一份临时类继承自注解标注的SQLiteOpenHelper类;其中,在生成的SQLiteOpenHelper类的onCreate和onUpgrade两个方法中,通过SQLiteOpenHelper注解中的参数为对应的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段;具体为:
步骤S21、编译时该注解处理器将生成一份代理类继承自注解标注的SQLiteOpenHelper类上;
步骤S22、在代理类的onCreate和onUpgrade两个方法中,通过注解参数中的配置列表,为指定的本地数据表增加_sid、upd_time、sync_time、is_del、is_upd字段。
10.根据权利要求9所述的基于安卓系统的单机应用程序快速网络化系统,其特征在于,所述步骤S22具体包括:
步骤S221、在编译时拦截onCreate方法,调用父类onCreate方法创建基础表结构;
步骤S222、根据SQLiteOpenHelper注解中的配置数据,判断对应于onCreate方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则跳转到步骤S204;如果否则跳转到步骤S203;
步骤S223、在对应于onCreate方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段;
步骤S224、在编译时拦截onUpgrade方法,调用父类onUpgrade方法创建基础表结构;
步骤S225、根据SQLiteOpenHelper注解中的配置数据,判断对应于onUpgrade方法创建的基础表结构中是否存在_sid、upd_time、sync_time、is_del、is_upd字段,如果是则步骤结束;如果否则跳转到步骤S226;
步骤S226、在对应于onUpgrade方法创建的基础表结构中创建_sid、upd_time、sync_time、is_del、is_upd字段。
CN201510704583.0A 2015-10-27 2015-10-27 一种基于安卓系统的单机应用网络化方法和系统 Active CN105354073B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510704583.0A CN105354073B (zh) 2015-10-27 2015-10-27 一种基于安卓系统的单机应用网络化方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510704583.0A CN105354073B (zh) 2015-10-27 2015-10-27 一种基于安卓系统的单机应用网络化方法和系统

Publications (2)

Publication Number Publication Date
CN105354073A true CN105354073A (zh) 2016-02-24
CN105354073B CN105354073B (zh) 2018-11-06

Family

ID=55330047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510704583.0A Active CN105354073B (zh) 2015-10-27 2015-10-27 一种基于安卓系统的单机应用网络化方法和系统

Country Status (1)

Country Link
CN (1) CN105354073B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108710504A (zh) * 2017-04-10 2018-10-26 北大方正集团有限公司 数据库操作方法及装置
CN109189584A (zh) * 2018-07-05 2019-01-11 北京三快在线科技有限公司 应用程序之间的通信方法、装置、电子设备及存储介质
CN109857444A (zh) * 2019-01-03 2019-06-07 上海拉扎斯信息科技有限公司 应用程序的更新方法、装置、电子设备和可读存储介质
CN111666161A (zh) * 2019-03-07 2020-09-15 深圳Tcl数字技术有限公司 一种统一设置接口的方法、系统及可读存储介质
CN113448995A (zh) * 2020-03-25 2021-09-28 北京沃东天骏信息技术有限公司 数据库操作方法及装置、系统、电子设备和存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1357828A (zh) * 2000-12-08 2002-07-10 英业达股份有限公司 可在单机版与网络版间转换的软件设计方法
US20060059422A1 (en) * 2004-09-16 2006-03-16 Ting-Hu Wu Desktop application implemented with web paradigm
CN102193953B (zh) * 2010-03-17 2017-04-12 日电(中国)有限公司 桌面应用迁移系统和方法
CN102200976B (zh) * 2010-03-23 2014-11-05 日电(中国)有限公司 桌面应用转换成网络应用的定制系统和方法
US9176742B2 (en) * 2010-12-27 2015-11-03 Microsoft Technology Licensing, Llc Converting desktop applications to web applications
CN103309685B (zh) * 2012-03-09 2016-08-03 腾讯科技(深圳)有限公司 基于开放平台加载本地应用和网络应用的方法及装置
WO2014062804A1 (en) * 2012-10-16 2014-04-24 Citrix Systems, Inc. Application wrapping for application management framework
CN103631601A (zh) * 2013-12-10 2014-03-12 北京中电普华信息技术有限公司 一种代码生成方法和装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108710504A (zh) * 2017-04-10 2018-10-26 北大方正集团有限公司 数据库操作方法及装置
CN109189584A (zh) * 2018-07-05 2019-01-11 北京三快在线科技有限公司 应用程序之间的通信方法、装置、电子设备及存储介质
CN109857444A (zh) * 2019-01-03 2019-06-07 上海拉扎斯信息科技有限公司 应用程序的更新方法、装置、电子设备和可读存储介质
CN109857444B (zh) * 2019-01-03 2022-04-12 上海拉扎斯信息科技有限公司 应用程序的更新方法、装置、电子设备和可读存储介质
CN111666161A (zh) * 2019-03-07 2020-09-15 深圳Tcl数字技术有限公司 一种统一设置接口的方法、系统及可读存储介质
CN111666161B (zh) * 2019-03-07 2024-03-12 深圳Tcl数字技术有限公司 一种统一设置接口的方法、系统及可读存储介质
CN113448995A (zh) * 2020-03-25 2021-09-28 北京沃东天骏信息技术有限公司 数据库操作方法及装置、系统、电子设备和存储介质

Also Published As

Publication number Publication date
CN105354073B (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
US10558642B2 (en) Mechanism for deprecating object oriented data
CN105354073A (zh) 一种基于安卓系统的单机应用网络化方法和系统
US20130332449A1 (en) Generating data processing code from a directed acyclic graph
CN110955410B (zh) 一种代码自动生成方法、装置、设备及介质
CN105718251A (zh) 多语言sdk自动化实现方法及系统
US20150339119A1 (en) System and Method Thereof for Creating Dynamically Attachable and Detachable Binary Files
Wittern et al. Opportunities in software engineering research for web API consumption
CN109324799A (zh) 一种代码编译方法、计算机装置及计算机可读存储介质
TW202001548A (zh) 應用程式的開發方法和裝置
CN111399840B (zh) 一种模块开发方法及装置
CN110674625A (zh) 代码生成的方法、装置、计算机设备和存储介质
US20190146902A1 (en) Development-time awareness of a production dependency injection environment
CN111309335B (zh) 插件应用的编译方法、装置及计算机可读存储介质
CN112769706B (zh) 组件化路由方法及系统
JP2014071899A (ja) ソフトウェア開発方法及びそのためのシステム
CN104461531A (zh) 一种报表系统自定义函数的实现方法
US9244706B2 (en) Command line shell command generation based on schema
CN110750310B (zh) 基于ios系统组件化开发的二进制和源码切换方法
CN114721647B (zh) 一种基于无代码应用开发的面向对象编程方法
CN103678687A (zh) 基于配置系统的项目创建方法及装置
CN116360887A (zh) 一种程序参数加载方法、装置、设备及存储介质
CN107665124B (zh) 模块化JavaScript文件处理方法、设备和服务器
CN109918059B (zh) 应用的功能扩展方法、装置、终端设备和存储介质
CN112486990B (zh) 一种根据模型描述同步数据库表结构的方法及设备
US9389838B2 (en) Method for creating a computer software compiler for client server computing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant