CN105354073B - 一种基于安卓系统的单机应用网络化方法和系统 - Google Patents
一种基于安卓系统的单机应用网络化方法和系统 Download PDFInfo
- Publication number
- CN105354073B CN105354073B CN201510704583.0A CN201510704583A CN105354073B CN 105354073 B CN105354073 B CN 105354073B CN 201510704583 A CN201510704583 A CN 201510704583A CN 105354073 B CN105354073 B CN 105354073B
- Authority
- CN
- China
- Prior art keywords
- contentprovider
- data
- class
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task 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})
public class OldContentProvider extends ContentProvider {
…
}
其中,
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字段,如果是则跳转到步骤S224;如果否则跳转到步骤S223;
步骤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.一种用于实现权利要求1-5任一项中基于安卓系统的单机应用程序快速网络化方法的装置,其特征在于,包括:
ContentProvider注解模块,用于标注需要处理的ContentProvider类以及存储的配置数据;
ContentProvider注解处理模块,用于编译添加了ContentProvider注解的ContentProvider类以及通过ContentProvider注解中的参数、ContentProvider代码模板生成ContentProvider代理类;
ContentProvider代码模板,用于辅助ContentProvider注解处理模块在编译时通过处理所述ContentProvider注解,以根据ContentProvider注解中的参数动态生成临时代码;
ContentProvider代理类,用于按照权利要求1-5中所述方法对基于安卓系统的单机应用网络化过程实现的代理类;
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字段,如果是则跳转到步骤S224;如果否则跳转到步骤S223;
步骤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字段。
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 CN105354073A (zh) | 2016-02-24 |
CN105354073B true 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) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108710504A (zh) * | 2017-04-10 | 2018-10-26 | 北大方正集团有限公司 | 数据库操作方法及装置 |
CN109189584B (zh) * | 2018-07-05 | 2021-02-19 | 北京三快在线科技有限公司 | 应用程序之间的通信方法、装置、电子设备及存储介质 |
CN109857444B (zh) * | 2019-01-03 | 2022-04-12 | 上海拉扎斯信息科技有限公司 | 应用程序的更新方法、装置、电子设备和可读存储介质 |
CN111666161B (zh) * | 2019-03-07 | 2024-03-12 | 深圳Tcl数字技术有限公司 | 一种统一设置接口的方法、系统及可读存储介质 |
CN113448995A (zh) * | 2020-03-25 | 2021-09-28 | 北京沃东天骏信息技术有限公司 | 数据库操作方法及装置、系统、电子设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1357828A (zh) * | 2000-12-08 | 2002-07-10 | 英业达股份有限公司 | 可在单机版与网络版间转换的软件设计方法 |
CN1749961A (zh) * | 2004-09-16 | 2006-03-22 | 安利美股份有限公司 | 使用网络模型的单机软件 |
CN102193953A (zh) * | 2010-03-17 | 2011-09-21 | 日电(中国)有限公司 | 桌面应用迁移系统和方法 |
CN102200976A (zh) * | 2010-03-23 | 2011-09-28 | 日电(中国)有限公司 | 桌面应用转换成网络应用的定制系统和方法 |
WO2012092117A3 (en) * | 2010-12-27 | 2013-01-17 | Microsoft Corporation | Converting desktop applications to web applications |
CN103309685A (zh) * | 2012-03-09 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 基于开放平台加载本地应用和网络应用的方法及装置 |
CN103631601A (zh) * | 2013-12-10 | 2014-03-12 | 北京中电普华信息技术有限公司 | 一种代码生成方法和装置 |
CN104854561A (zh) * | 2012-10-16 | 2015-08-19 | 思杰系统有限公司 | 用于应用程序管理框架的应用程序封装 |
-
2015
- 2015-10-27 CN CN201510704583.0A patent/CN105354073B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1357828A (zh) * | 2000-12-08 | 2002-07-10 | 英业达股份有限公司 | 可在单机版与网络版间转换的软件设计方法 |
CN1749961A (zh) * | 2004-09-16 | 2006-03-22 | 安利美股份有限公司 | 使用网络模型的单机软件 |
CN102193953A (zh) * | 2010-03-17 | 2011-09-21 | 日电(中国)有限公司 | 桌面应用迁移系统和方法 |
CN102200976A (zh) * | 2010-03-23 | 2011-09-28 | 日电(中国)有限公司 | 桌面应用转换成网络应用的定制系统和方法 |
WO2012092117A3 (en) * | 2010-12-27 | 2013-01-17 | Microsoft Corporation | Converting desktop applications to web applications |
CN103309685A (zh) * | 2012-03-09 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 基于开放平台加载本地应用和网络应用的方法及装置 |
CN104854561A (zh) * | 2012-10-16 | 2015-08-19 | 思杰系统有限公司 | 用于应用程序管理框架的应用程序封装 |
CN103631601A (zh) * | 2013-12-10 | 2014-03-12 | 北京中电普华信息技术有限公司 | 一种代码生成方法和装置 |
Non-Patent Citations (4)
Title |
---|
《JNl和ActiVeX技术在组态监控系统网络化迁移中的应用》;罗培等;《计算机应用研究》;20071231;全文 * |
《利用Appeon实现PB应用程序的Web发布》;胡敏等;《现代计算机》;20040930;全文 * |
《基于PB把C/S应用迁移到B/S应用的研究》;郭新顺;《福建电脑》;20110731;全文 * |
《基于多代理的桌面应用分布式迁移工具》;张金灯;《计算机工程与应用》;20051015;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105354073A (zh) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105354073B (zh) | 一种基于安卓系统的单机应用网络化方法和系统 | |
WO2021088909A1 (zh) | 辅助算子开发的方法和系统 | |
Rivero et al. | Mockup-driven development: providing agile support for model-driven web engineering | |
US11449348B2 (en) | Pre/post deployment customization | |
CN110609906B (zh) | 知识图谱构建方法及装置、存储介质及电子终端 | |
CN110308930A (zh) | 接口文档生成方法、装置、计算机设备和存储介质 | |
US9646103B2 (en) | Client-side template engine and method for constructing a nested DOM module for a website | |
Pettersson et al. | Industrial experience with building a web portal product line using a lightweight, reactive approach | |
Kunszt et al. | iPortal: the swiss grid proteomics portal: Requirements and new features based on experience and usability considerations | |
US10949171B1 (en) | Tools, mechanisms, and processes for transforming modules for an application into pluggable modules | |
CN106997298A (zh) | 一种应用资源获取方法及装置 | |
CN110515620B (zh) | 一种自动化资源处理方法及系统 | |
WO2016062152A1 (zh) | 网元巡检方法及装置 | |
Westergaard et al. | Cpn tools 4: A process modeling tool combining declarative and imperative paradigms | |
CN107294750A (zh) | 一种云集群能自识别的分布配置管理方法和装置 | |
CN110457010B (zh) | 基于协作平台批量更改任务单的方法及装置 | |
WO2023064495A1 (en) | Adaptive configuration of finite state machines in applications based on user related conditions | |
TW201725542A (zh) | 表單管理系統及方法 | |
CN116166904A (zh) | 一种web页报表生成方法、装置、设备和介质 | |
CN108052335A (zh) | 数据管理方法、装置、计算设备及存储介质 | |
CN107665124A (zh) | 模块化JavaScript文件处理方法、设备和服务器 | |
US20190244151A1 (en) | Just in time compilation (jit) for business process execution | |
WO2023162260A1 (ja) | 環境構築支援装置、システム及び方法、並びに、コンピュータ可読媒体 | |
Sadakath | Spring Boot 2.0 Projects: Build production-grade reactive applications and microservices with Spring Boot | |
US20240118861A1 (en) | Operation support apparatus, system, method, and computer readable medium |
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 |