CN109460269B - Android系统中横竖屏业务逻辑共享的方法及装置 - Google Patents

Android系统中横竖屏业务逻辑共享的方法及装置 Download PDF

Info

Publication number
CN109460269B
CN109460269B CN201710773929.1A CN201710773929A CN109460269B CN 109460269 B CN109460269 B CN 109460269B CN 201710773929 A CN201710773929 A CN 201710773929A CN 109460269 B CN109460269 B CN 109460269B
Authority
CN
China
Prior art keywords
screen
event
service
horizontal
class
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
Application number
CN201710773929.1A
Other languages
English (en)
Other versions
CN109460269A (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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710773929.1A priority Critical patent/CN109460269B/zh
Priority to PCT/CN2017/120194 priority patent/WO2019041709A1/zh
Publication of CN109460269A publication Critical patent/CN109460269A/zh
Application granted granted Critical
Publication of CN109460269B publication Critical patent/CN109460269B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • 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
    • 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
    • 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/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供Android系统中横竖屏业务逻辑共享的方法及装置,其中,所述方法包括:为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;将系统回调给横竖或竖屏界面的事件函数onTouchEvent传递至所述业务逻辑类的实例化对象中进行处理。本发明通过将横竖和竖屏业务逻辑共有的功能桥接到自定义的业务逻辑类中,实现了业务共享的目的,极大的降低代码的冗余,提高开发效率。

Description

Android系统中横竖屏业务逻辑共享的方法及装置
技术领域
本发明涉及计算机技术领域,更具体地,涉及Android系统中横竖屏业务逻辑共享的方法及装置。
背景技术
在直播软件Android端app的开发过程中通常会需要实现礼物面板的功能,礼物面板主要用于承载礼物数据。礼物面板的设计过程中有一套横竖屏的业务逻辑,在横竖屏的业务逻辑下礼物面板内部的消息处理机制是相同的,不同之处仅在于横屏和竖屏下UI界面的呈现形式不一样的。
传统的方案在实现横竖屏业务逻辑时采用的是横屏一套业务逻辑,竖屏一套业务逻辑,这两套业务逻辑是独立分开的。但是,由于横屏和竖屏的业务逻辑中有很多类似的共享功能,目前的实现方法将两套业务逻辑独立分开,造成了这些共享功能不能够被复用,使得横竖屏实现代码存在冗余问题,进而导致了代码后期维护较困难的问题。
发明内容
为了克服现有横竖屏业务逻辑独立分开、共享功能没有复用所造成的代码冗余和维护困难的问题,本发明提出Android系统中横竖屏业务逻辑共享的方法及装置。
根据本发明的一个方面,提供Android系统中横竖屏业务逻辑共享的方法,包括:
S1,为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;
S2,根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;
S3,将Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
其中,所述步骤S1还包括:
在所述业务逻辑类中定义与Android系统回调给横竖或竖屏的事件函数onTouchEvent的参数相同的事件处理函数。
其中,所述步骤S3进一步包括:
将所述Android系统回调给横屏或竖屏的事件函数onTouchEvent所捕获到的事件对象透传至所述事件处理函数中进行处理。
其中,所述步骤S3进一步包括:
对所述Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象进行筛选,并将筛选后的事件对象传递至所述事件处理函数中进行处理。
其中,所述步骤S3还包括:
所述事件处理函数接收到事件对象后,获取事件对象所对应的事件类型;
若所述事件类型为与更新UI有关,则所述业务逻辑类的实例化对象向横屏或竖屏发送更新UI的消息;或者,
若所述事件类型为非UI相关,则在所述事件处理函数的内部调用相应的功能函数对所述事件对象进行处理。
其中,对所述Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象进行筛选的步骤进一步包括:
获取Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象所对应的事件类型;
筛选出事件类型为非UI相关的事件对象。
根据本发明的另一个方面,提供Android系统中横竖屏业务逻辑共享的装置,包括:
第一定义单元,用于为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;
第二定义单元,用于根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;
业务逻辑处理单元,用于将Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
其中,所述第一定义单元还包括:
定义子单元,用于在所述业务逻辑类中定义与Android系统回调给横竖或竖屏的事件函数onTouchEvent的参数相同的事件处理函数。
根据本发明的另一个方面,提供Android系统中横竖屏业务逻辑共享的设备,包括存储器、处理器、以及总线,
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述存储器中的程序指令,以执行如前任一所述的方法。
根据本发明的又一个方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如前任一所述的方法。
本发明提出的Android系统中横竖屏业务逻辑共享的方法及装置,通过将横竖和竖屏业务逻辑共有的功能桥接到自定义的业务逻辑类中,实现了业务共享的目的,能够有效的共享横竖屏中相同的业务逻辑,极大的降低代码的冗余,提高开发效率,同时降低了后期代码维护成本。
附图说明
图1为本发明一实施例提供的Android系统中横竖屏业务逻辑共享的方法的流程示意图;
图2为本发明另一实施例提供的Android系统中横竖屏业务逻辑共享的装置的结构示意图;
图3为本发明另一实施例提供的Android系统中横竖屏业务逻辑共享的设备的结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示,为本发明一实施例提供的Android系统中横竖屏业务逻辑共享的方法的流程示意图,包括:
S1,为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;
S2,根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;
S3,将Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
具体地,步骤S1中,通过对横竖屏的业务逻辑进行抽象和分离,将横屏和竖屏之间相同的业务逻辑定义为一个业务逻辑类,用于控制横竖屏的业务逻辑。我们可以将ViewHolder定义为业务逻辑类,也就是说ViewHolder主要用于控制横竖屏的业务逻辑。以礼物面板的业务逻辑共享为例,当我们点击礼物面板的时候我们需要把礼物面板展示出来,点击礼物面板中的一个礼物并点击发送按钮的时候,需要发送礼物并将该消息通知给服务器。不管是横屏还是竖屏的礼物面板,都包含赠送礼物这个功能,赠送礼物这个功能就通过ViewHolder来实现。
通过上面的描述我们可以发现ViewHolder中主要存放的是业务逻辑的实施方法。同样以赠送礼物为例来进行说明,我们在横竖屏的业务逻辑中都包含有赠送礼物这个功能。横竖屏的赠送礼物除了UI上有差异性以外其他功能都是相同的,比如向服务器发送赠送礼物的价格,服务器返回用户剩余礼物信息的解析等过程都是相同的。这样我们就将赠送礼物这个功能编写为函数sendGift,并将该函数sendGift存储在ViewHolder中,这样我们定义的一个ViewHolder就拥有了除UI以外的赠送礼物的所有功能。通过上述举例我们可以看出,赠送礼物是横屏和竖屏中都需要的业务方法,我们将该业务方法独立出来存储到ViewHolder中后续方便横屏和竖屏来进行使用。因此在步骤S1中,将横屏和竖屏之间相同的业务逻辑所对应的功能函数存储至我们所定义的业务逻辑类中。
在步骤S1中,我们实现了将横屏和竖屏之间相同的业务逻辑所对应的功能函数存储至自定义的业务逻辑类中,那么,要实现横屏和竖屏,还需要实现横屏和竖屏之间不同的业务逻辑,横屏和竖屏之间不同的业务逻辑即是指那些与改变UI有关的功能。因此,我们在步骤S2中,根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类。横屏的第一业务类用于实现横屏页面,竖屏的第二业务类用于实现竖屏页面。目前,横屏的第一业务类中仅包含与横屏UI实现相关的功能函数,竖屏的第二业务类中仅包含与竖屏的UI实现相关的功能函数,而负责具体业务功能实现的业务功能函数都在步骤S1中所定义的业务逻辑类中,因此,在步骤S2中通过一种方法将横屏和竖屏共有的业务逻辑添加进所定义的横屏的第一业务类和竖屏的第二业务类中,具体地,横屏页面和竖屏页面在创建的时候会对应地调用所述横屏的第一业务类和所述竖屏的第二业务类的构造函数,在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化,即在横屏和竖屏页面的构造函数中对ViewHolder类进行实例化,这样横屏和竖屏页面中均含有一个ViewHolder对象,即业务逻辑类所对应的实例化对象,横屏和竖屏的业务逻辑就完整了。后续业务逻辑的展开就可以使用ViewHolder来作为一个桥接,来桥接横屏和竖屏业务逻辑中的共享业务功能函数了。例如,上述举例的函数sendGift既可以在横屏中使用也可以在竖屏中进行使用了。
由于Android系统是通过事件来进行触发的,即应用程序的执行流程是通过外部事件的触发来进行推进的。整个应用程序的生命周期由一系列的触发事件来维系。经过步骤S1和步骤S2,将横屏和竖屏之间相同的业务逻辑所对应的功能函数存放在业务逻辑类ViewHolder的实例化对象中,步骤S3需要将所有触发事件所对应的业务功能通过ViewHolder来进行完成,由于系统回调的事件函数onTouchEvent是系统回调到页面上所有触发事件的入口,因此将系统回调给横竖或竖屏界面的事件函数onTouchEvent所捕获到的事件对象传递到ViewHolder的实例化对象中来进行处理,才能够真正实现横竖屏的业务逻辑。然后,调用ViewHolder中相应的横屏和竖屏之间相同的业务逻辑所对应的功能函数,在ViewHolder中实现横竖屏的业务功能处理。步骤S3将原本应该放在横屏和竖屏页面中各自处理的消息事件统一到ViewHolder中来进行处理。
本发明提出的Android系统中横竖屏业务逻辑共享的方法,通过将横竖和竖屏业务逻辑共有的功能桥接到自定义的业务逻辑类中,实现了业务共享的目的,能够有效的共享横竖屏中相同的业务逻辑,极大的降低代码的冗余,提高开发效率,同时降低了后期代码维护成本。
基于上述实施例,所述步骤S1还包括:
在所述业务逻辑类中定义与Android系统回调给横竖或竖屏的事件函数onTouchEvent的参数相同的事件处理函数。
具体地,系统接收到用户点击或触摸Android终端设备的事件时,会将所述事件封装成事件对象,然后通过系统回调的方式将事件对象传递给处理该事件的功能函数。由于横屏和竖屏之间相同的业务逻辑所对应的功能都存储在我们自定义的业务逻辑类ViewHolder中,因此要调用相应的功能函数处理用户的操作事件,需要先将事件对象传递给业务逻辑类ViewHolder,为了实现传递,在所述业务逻辑类ViewHolder中定义一个与系统回调给横屏或竖屏的事件函数onTouchEvent的参数完全一致的事件处理函数,通过所述事件处理函数,就能够将将系统所捕获到的事件传递至所定义的业务逻辑类的实例化对象中进行处理,从而实现横屏和竖屏的功能业务处理。
基于上述实施例,所述步骤S3进一步包括:
将所述Android系统回调给横屏或竖屏的事件函数onTouchEvent所捕获到的事件对象透传至所述事件处理函数中进行处理。
具体地,透传是指将系统回调给横屏或竖屏界面的事件函数onTouchEvent所捕获到的所有事件对象传递至所述事件处理函数中进行处理,即不对事件对象进行筛选,将所有的触发事件都传递至所述业务逻辑类的事件处理函数中进行处理。
其中,所述步骤S3还包括:
所述事件处理函数接收到事件对象后,获取事件对象所对应的事件类型;
若所述事件类型为与更新UI有关,则所述业务逻辑类的实例化对象向横屏或竖屏发送更新UI的消息;或者,
若所述事件类型为非UI相关,则在所述事件处理函数的内部调用相应的功能函数对所述事件对象进行处理。
具体地,在业务逻辑类ViewHolder的事件处理函数中实现真实的业务功能处理。由于所述业务逻辑类ViewHolder中存储的是横屏和竖屏之间相同的业务逻辑所对应的功能函数,因此,在需要处理涉及非UI相关的事件时,事件处理函数可以直接进行处理,而如果要处理涉及到更新UI等与UI操作有关的事件时,由于横屏和竖屏的UI界面是不一样的,无法通过ViewHolder进行统一处理,此时为了解决该问题,ViewHolder需要向需要更新UI的地方发送一个更新UI的消息Msg,然后横屏界面或竖屏界面接收到该消息后,调用相应的功能函数去更新横屏的UI逻辑或竖屏的UI逻辑,这样就使得所有的触发事件都能够被集合到ViewHolder中来进行处理了,后续横屏和竖屏的功能业务逻辑也能够完全通过ViewHolder来达到共享的目的了。即所述事件处理函数接收到事件对象后,首先获取事件对象所对应的事件类型;然后,判断事件类型是否与UI操作有关,若所述事件类型为与更新UI有关,则所述业务逻辑类的实例化对象向横屏或竖屏发送更新UI的消息;若所述事件类型为非UI相关,则在所述事件处理函数的内部调用相应的功能函数对所述事件对象进行处理。
基于上述实施例,所述步骤S3进一步包括:
对所述Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象进行筛选,并将筛选后的事件对象传递至所述事件处理函数中进行处理。
具体地,将系统回调给横竖或竖屏界面的事件函数onTouchEvent所捕获到的事件对象先进行筛选后再传递,将筛选放在传递的步骤之前,从而实现将筛选和事件触发逻辑分开。将筛选后的事件对象传递至所述事件处理函数中进行处理,事件处理函数调用相应的功能函数对所接收到的事件对象进行处理,即经过筛选后的事件对象全都可以在ViewHolder中直接进行处理。此方式适用于事件对象大多属于与更新UI相关的事件类型。
其中,对所述系统回调给横竖或竖屏界面的事件函数onTouchEvent所捕获到的事件对象进行筛选的步骤进一步包括:
获取系统回调给横竖或竖屏界面的事件函数onTouchEvent所捕获到的事件对象所对应的事件类型;
筛选出事件类型为非UI相关的事件对象。
具体地,在用户操作事件发生时,首先获取事件对象所对应的事件类型,筛选出的非UI相关的事件对象直接传递给业务逻辑类ViewHolder的事件处理函数进行处理,而与更新UI有关的事件对象就通过消息的形式发送给横屏或竖屏进行处理,而不会被传递给业务逻辑类ViewHolder。
由于我们在ViewHolder中本身就是实现的横竖屏共享的方法,这样就使得横竖屏的业务逻辑能够统一到ViewHolder中来。对于ViewHolder相同业务逻辑中又包含不同UI处理的部分,我们使用了消息机制来解决该问题,将差异性的部分延迟到横屏和竖屏的业务类中来进行处理,这样也就保证了ViewHolder对业务的公共性的特点,也就能够确保ViewHolder能够在横屏和竖屏之间进行共享。
如图2所示,为本发明另一实施例提供的Android系统中横竖屏业务逻辑共享的装置的结构示意图,包括:第一定义单元21、第二定义单元22和业务逻辑处理单元23,其中,
第一定义单元21,用于为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;
第二定义单元22,用于根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;
业务逻辑处理单元23,用于将Android系统回调给横竖或竖屏界面的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
第一定义单元21通过对横竖屏的业务逻辑进行抽象和分离,将横屏和竖屏之间相同的业务逻辑定义为一个业务逻辑类,用于控制横竖屏的业务逻辑。我们可以将ViewHolder定义为业务逻辑类,也就是说ViewHolder主要用于控制横竖屏的业务逻辑。以礼物面板的业务逻辑共享为例,当我们点击礼物面板的时候我们需要把礼物面板展示出来,点击礼物面板中的一个礼物并点击发送按钮的时候,需要发送礼物并将该消息通知给服务器。不管是横屏还是竖屏的礼物面板,都包含赠送礼物这个功能,赠送礼物这个功能就通过ViewHolder来实现。
通过上面的描述我们可以发现ViewHolder中主要存放的是业务逻辑的实施方法。同样以赠送礼物为例来进行说明,我们在横竖屏的业务逻辑中都包含有赠送礼物这个功能。横竖屏的赠送礼物除了UI上有差异性以外其他功能都是相同的,比如向服务器发送赠送礼物的价格,服务器返回用户剩余礼物信息的解析等过程都是相同的。这样我们就将赠送礼物这个功能编写为函数sendGift,并将该函数sendGift存储在ViewHolder中,这样我们定义的一个ViewHolder就拥有了除UI以外的赠送礼物的所有功能。通过上述举例我们可以看出,赠送礼物是横屏和竖屏中都需要的业务方法,我们将该业务方法独立出来存储到ViewHolder中后续方便横屏和竖屏来进行使用。
前面实现了将横屏和竖屏之间相同的业务逻辑所对应的功能函数存储至自定义的业务逻辑类中,那么,要实现横屏和竖屏,还需要实现横屏和竖屏之间不同的业务逻辑,横屏和竖屏之间不同的业务逻辑即是指那些与改变UI有关的功能。因此,第二定义单元22,根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类。横屏的第一业务类用于实现横屏页面,竖屏的第二业务类用于实现竖屏页面。目前,横屏的第一业务类中仅包含与横屏UI实现相关的功能函数,竖屏的第二业务类中仅包含与竖屏的UI实现相关的功能函数,而负责具体业务功能实现的业务功能函数都在步骤S1中所定义的业务逻辑类中,因此,第二定义单元22通过一种方法将横屏和竖屏共有的业务逻辑添加进所定义的横屏的第一业务类和竖屏的第二业务类中,具体地,横屏页面和竖屏页面在创建的时候会对应地调用所述横屏的第一业务类和所述竖屏的第二业务类的构造函数,在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化,即在横屏和竖屏页面的构造函数中对ViewHolder类进行实例化,这样横屏和竖屏页面中均含有一个ViewHolder对象,即业务逻辑类所对应的实例化对象,横屏和竖屏的业务逻辑就完整了。后续业务逻辑的展开就可以使用ViewHolder来作为一个桥接,来桥接横屏和竖屏业务逻辑中的共享业务功能函数了。例如,上述举例的函数sendGift既可以在横屏中使用也可以在竖屏中进行使用了。
由于Android系统是通过事件来进行触发的,即应用程序的执行流程是通过外部事件的触发来进行推进的。整个应用程序的生命周期由一系列的触发事件来维系。经过第一定义单元21和第二定义单元22,将横屏和竖屏之间相同的业务逻辑所对应的功能函数存放在业务处理类ViewHolder的实例化对象中,业务逻辑处理单元23需要将所有触发事件所对应的业务功能通过ViewHolder来进行完成,由于系统回调的事件函数onTouchEvent是系统回调到页面上所有触发事件的入口,因此将系统回调给横竖或竖屏界面的事件函数onTouchEvent所捕获到的事件对象传递到ViewHolder的实例化对象中来进行处理,才能够真正实现横竖屏的业务逻辑。然后,在业务逻辑类ViewHolder的实例化对象中调用相应的横屏和竖屏之间相同的业务逻辑所对应的功能函数,从而实现横竖屏的业务功能处理。业务逻辑处理单元23将原本应该放在横屏和竖屏页面中各自处理的消息事件统一到ViewHolder中来进行处理。
其中,所述第一定义单元还包括:
定义子单元,用于在所述业务逻辑类中定义与Android系统回调给横竖或竖屏的事件函数onTouchEvent的参数相同的事件处理函数。
具体地,系统接收到用户点击或触摸Android终端设备的事件时,会将所述事件封装成事件对象,然后通过系统回调的方式将事件对象传递给处理该事件的功能函数。由于横屏和竖屏之间相同的业务逻辑所对应的功能都存储在我们自定义的业务逻辑类ViewHolder中,因为要调用相应地功能函数处理用户的操作事件,需要先将事件对象传递给业务逻辑类ViewHolder,为了实现透传,定义子单元在所述业务逻辑类ViewHolder中定义一个与系统回调给横屏或竖屏的事件函数onTouchEvent的参数完全一致的事件处理函数,通过所述事件处理函数,将系统所捕获到的事件传递至所定义的业务逻辑类的实例化对象中进行处理,从而实现横屏和竖屏的功能业务处理。
如图3所述,为本发明另一实施例提供的Android系统中横竖屏业务逻辑共享的设备的结构示意图,包括存储器31、处理器32、以及总线33,
所述处理器32和存储器31通过所述总线33完成相互间的通信;
所述存储器31存储有可被所述处理器32执行的程序指令,所述处理器32调用所述存储器中的程序指令,以执行如前任一所述的方法,例如包括:S1,为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;S2,根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;S3,将Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
根据本发明的又一个方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如前任一所述的方法,例如包括:S1,为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;S2,根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;S3,将Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的Android系统中横竖屏业务逻辑共享的设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.Android系统中横竖屏业务逻辑共享的方法,其特征在于,包括:
S1,为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;
S2,根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;
S3,将Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1还包括:
在所述业务逻辑类中定义与Android系统回调给横竖或竖屏的事件函数onTouchEvent的参数相同的事件处理函数。
3.根据权利要求2所述的方法,其特征在于,所述步骤S3进一步包括:
将所述Android系统回调给横屏或竖屏的事件函数onTouchEvent所捕获到的事件对象透传至所述事件处理函数中进行处理。
4.根据权利要求2所述的方法,其特征在于,所述步骤S3进一步包括:
对所述Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象进行筛选,并将筛选后的事件对象传递至所述事件处理函数中进行处理。
5.根据权利要求3所述的方法,其特征在于,所述步骤S3还包括:
所述事件处理函数接收到事件对象后,获取事件对象所对应的事件类型;
若所述事件类型为与更新UI有关,则所述业务逻辑类的实例化对象向横屏或竖屏发送更新UI的消息;或者,
若所述事件类型为非UI相关,则在所述事件处理函数的内部调用相应的功能函数对所述事件对象进行处理。
6.根据权利要求4所述的方法,其特征在于,对所述Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象进行筛选的步骤进一步包括:
获取Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象所对应的事件类型;
筛选出事件类型为非UI相关的事件对象。
7.Android系统中横竖屏业务逻辑共享的装置,其特征在于,包括:
第一定义单元,用于为横屏和竖屏之间相同的业务逻辑定义一个业务逻辑类,所述业务逻辑类中存储有横屏和竖屏之间相同的业务逻辑所对应的功能函数;
第二定义单元,用于根据横屏和竖屏之间不同的业务逻辑,定义所述横屏的第一业务类和所述竖屏的第二业务类,并在所述第一业务类的构造函数和所述第二业务类的构造函数中对所述业务逻辑类进行实例化;
业务逻辑处理单元,用于将Android系统回调给横竖或竖屏的事件函数onTouchEvent所捕获到的事件对象传递至所述业务逻辑类的实例化对象,以供所述业务逻辑类的实例化对象调用相应的功能函数对所述事件对象进行处理。
8.根据权利要求7所述的装置,其特征在于,所述第一定义单元还包括:
定义子单元,用于在所述业务逻辑类中定义与Android系统回调给横竖或竖屏的事件函数onTouchEvent的参数相同的事件处理函数。
9.Android系统中横竖屏业务逻辑共享的设备,包括存储器、处理器、以及总线,
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述存储器中的程序指令,以执行如权利要求1至6任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使计算机执行如权利要求1至6任一所述的方法。
CN201710773929.1A 2017-08-31 2017-08-31 Android系统中横竖屏业务逻辑共享的方法及装置 Active CN109460269B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710773929.1A CN109460269B (zh) 2017-08-31 2017-08-31 Android系统中横竖屏业务逻辑共享的方法及装置
PCT/CN2017/120194 WO2019041709A1 (zh) 2017-08-31 2017-12-29 Android系统中横竖屏业务逻辑共享的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710773929.1A CN109460269B (zh) 2017-08-31 2017-08-31 Android系统中横竖屏业务逻辑共享的方法及装置

Publications (2)

Publication Number Publication Date
CN109460269A CN109460269A (zh) 2019-03-12
CN109460269B true CN109460269B (zh) 2020-07-10

Family

ID=65526197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710773929.1A Active CN109460269B (zh) 2017-08-31 2017-08-31 Android系统中横竖屏业务逻辑共享的方法及装置

Country Status (2)

Country Link
CN (1) CN109460269B (zh)
WO (1) WO2019041709A1 (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103472997A (zh) * 2013-09-24 2013-12-25 沈阳美行科技有限公司 一种根据横竖屏自动切换软件界面显示风格的方法
CN104423931A (zh) * 2013-08-20 2015-03-18 北大方正集团有限公司 用于横屏和竖屏显示的共用资源的生成方法和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100512132C (zh) * 2003-04-10 2009-07-08 华为技术有限公司 一种业务逻辑运行环境实现的方法
US10061573B2 (en) * 2013-01-29 2018-08-28 Mobilize.Net Corporation User interfaces of application porting software platform
CN103729188B (zh) * 2013-12-31 2017-06-16 恒鸿达科技有限公司 Android系统应用程序的开发方法、运行方法、运行装置
CN107087236B (zh) * 2017-03-22 2020-02-07 北京潘达互娱科技有限公司 一种直播信息展示方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104423931A (zh) * 2013-08-20 2015-03-18 北大方正集团有限公司 用于横屏和竖屏显示的共用资源的生成方法和系统
CN103472997A (zh) * 2013-09-24 2013-12-25 沈阳美行科技有限公司 一种根据横竖屏自动切换软件界面显示风格的方法

Also Published As

Publication number Publication date
CN109460269A (zh) 2019-03-12
WO2019041709A1 (zh) 2019-03-07

Similar Documents

Publication Publication Date Title
US11803451B2 (en) Application exception recovery
CN110888615B (zh) 用于Android系统双屏异显的多输入设备交互方法、装置及介质
CN107515776A (zh) 业务不间断升级方法、待升级节点和可读存储介质
KR101865432B1 (ko) 메시지 큐 관리
US10579369B2 (en) Container based application reification
CN108008950B (zh) 一种用户界面更新的实现方法及装置
CN108021377A (zh) 一种应用图标更新方法及装置
US20220004446A1 (en) Selectively filtering applications from an application volume
CN109871209A (zh) 列表页面状态恢复方法及装置
CN105701409B (zh) 一种实现文件虚拟化的方法及装置
CN111078348A (zh) 一种界面管理方法、装置、设备和存储介质
CN107391274A (zh) 离线消息的处理方法及装置
CN109460269B (zh) Android系统中横竖屏业务逻辑共享的方法及装置
CN105786434B (zh) 一种远程显示的控制方法及设备
US20130232509A1 (en) Dynamic user interface aggregation through smart eventing with non-instantiated content
CN108733536A (zh) 监控管理系统及方法
CN103838575A (zh) 一种基于extjs框架的插件式页面定制实现方法
CN108153564B (zh) 界面管理方法、设备及系统和计算机可读存储介质
CN113950034A (zh) 蓝牙行为的模拟方法、装置和设备
CN113986493A (zh) 业务使用请求处理方法、相关装置及计算机程序产品
CN113656196A (zh) 一种Linux兼容Android的应用间传送文件方法及装置
CN112261066A (zh) 一种云服务平台支持coap设备的方法
US20160154684A1 (en) Data processing system and data processing method
CN114185845A (zh) 一种文件管理方法、装置、计算机设备及存储介质
CN111049981A (zh) 消息标识方法、装置、用户设备以及计算机可读存储介质

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
GR01 Patent grant
GR01 Patent grant