CN107391274A - 离线消息的处理方法及装置 - Google Patents
离线消息的处理方法及装置 Download PDFInfo
- Publication number
- CN107391274A CN107391274A CN201710517258.2A CN201710517258A CN107391274A CN 107391274 A CN107391274 A CN 107391274A CN 201710517258 A CN201710517258 A CN 201710517258A CN 107391274 A CN107391274 A CN 107391274A
- Authority
- CN
- China
- Prior art keywords
- deferred information
- thread
- processing method
- message
- deferred
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 30
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000008569 process Effects 0.000 claims abstract description 46
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001052 transient effect Effects 0.000 claims description 9
- 230000000694 effects Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供了一种离线消息的处理方法及装置,所述方法包括:S1,获取离线消息,并将所述离线消息缓存至预设消息池中;S2,开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主进程对所述离线消息进行解码和处理。本发明提供的离线消息的处理方法及装置,将离线消息缓存至预设消息池中,并通过开启新的线程,使离线消息经新的线程传输至主线程中,在主线程中进行后续的解码和处理后实现离线消息的显示。使用户在点击离线通知后,可以及时的看到离线消息中包含的内容,使用户的体验度提高。
Description
技术领域
本发明涉及网络通知处理领域,更具体地,涉及离线消息的处理方法及装置。
背景技术
随着移动终端的快速发展,对安装在移动终端上的各款应用APP的研究已成为主流。任何一款APP都在努力提高其活跃度,即通过各种方法引起APP用户的关注,以提高用户对APP的使用时间,或者吸引更多非用户下载并使用该款APP。
图1为目前主流的移动应用获取推送通知的流程图,图中内容提供者(Provide)将要推送的通知传递至苹果推送通知服务(Apple Push Notification service,APNs),由APNs将通知推送至移动终端,移动终端可以为电脑、平板或手机等。这里所说将通知推送至移动终端,实际上是推送至安装在移动终端上的客户应用程序(Client APP)。
其中,推送给Client APP的消息包括:在APP前台运行时实时推送的消息和在APP离线时推送的消息。
推送动作是由服务器发起,APP负责接收和处理推送的消息,服务端推送的消息可分为两种:通知消息和透传消息。通知消息又分为在线消息和离线消息。在线消息属于在APP进程运行时的消息推送,离线消息与APP进程是否处于运行状态无关。
离线消息的推送,主要是为了防止APP接收的在线消息在后台进程中被关闭或者APP退出进程后无法再继续接收在线消息。离线消息通常由第三方数据库暂时存储,APP进程运行时弹出离线通知,再根据用户是否点击离线通知来决定后续的离线消息接收和处理。
目前,已出现可接收服务器推送的离线消息的移动终端,离线消息在移动终端以离线通知的形式显示。在用户点击离线通知后统一的处理方式有2种:(1)直接启动APP的启动页活动面板(LauncherActivity),也就是用户点击离线通知后,界面跳转至APP入口,从APP入口进入APP;(2)直接启动指定的活动面板(Activity),也就是用户点击离线通知后,界面跳转至离线通知中的离线消息界面。
APP可根据自身需求对离线通知的处理方式进行选择,但在选择第一种处理方式时,即在用户点击离线通知后直接启动APP的LauncherActivity,界面跳转至APP入口。而从APP入口进入APP后便不再进行后续操作,只有当用户点击与离线通知对应的离线消息时才会启动指定的Activity,导致不能及时让用户看到推送的离线消息中包含的内容,使用户的体验度不高。
发明内容
为克服上述问题或者至少部分地解决上述问题,本发明提供了离线消息的处理方法及装置。
一方面,本发明提供了一种离线消息的处理方法,包括:S1,获取离线消息,并将所述离线消息缓存至预设消息池中;S2,开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
优选地,S1具体包括:由所述第一状态转换为第二状态后或处于第三状态时,获取离线消息,并将所述离线消息缓存至预设消息池中。
优选地,S2具体包括:所述新的线程通过轮询器Looper依次获取所述预设消息池中的所述离线消息,并将所述离线消息逐一传递至所述主线程,以供所述主线程对所述离线消息进行解码和处理。
优选地,在将所述离线消息逐一传递至所述主线程后、所述主线程对所述离线消息进行解码和处理前还包括:将所述离线消息加入消息队列。
优选地,所述消息队列具体为:阻塞队列。
优选地,S1中所述获取离线消息具体包括:通过接口定义语言将意图服务进程与推送服务进程进行绑定,通过所述意图服务进程获取所述推送服务进程接收到的所述离线消息。
优选地,在获取所述推送服务进程接收到的所述离线消息的过程中,所述意图服务进程的运行状态为持续运行。
另一方面,本发明提供了一种离线消息的处理装置,包括:通知获取模块和通知处理模块。其中,通知获取模块,用于获取离线消息,并将所述离线消息缓存至预设消息池中;通知处理模块,用于开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
又一方面,本发明提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述的处理方法。
又一方面,本发明提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述的处理方法。
本发明提供的离线消息的处理方法及装置,将离线消息缓存至预设消息池中,并通过开启新的线程,使离线消息经新的线程传输至主线程中,在主线程中进行后续的解码和处理后实现离线消息的显示。使用户在点击离线通知后,可以及时的看到离线消息中包含的内容,使用户的体验度提高。
附图说明
图1为现有技术中移动应用获取推送通知的流程图;
图2为本发明一实施例提供的一种离线消息的处理方法流程图;
图3为本发明另一实施例提供的一种离线消息的处理装置结构图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
目前,已出现可接收服务器推送的离线消息的移动终端,离线消息在移动终端以离线通知的形式显示。在用户点击离线通知后统一的处理方式有2种:(1)直接启动APP的LauncherActivity,也就是用户点击离线通知后,界面跳转至APP入口,从APP入口进入APP;(2)直接启动指定的Activity,也就是用户点击离线通知后,界面跳转至离线通知中的离线消息界面。
APP在集成用于厂商推送的软件开发工具包(Software Development Kit,SDK)时,可根据自身需求对离线消息的处理方式进行选择,但在选择第一种处理方式时,即在用户点击离线通知后直接启动APP的LauncherActivity,界面跳转至APP入口。但从APP入口进入APP后便不再进行操作,只有当用户点击与离线通知对应的离线消息时才会启动指定的Activity,导致不能及时让用户看到推送的离线消息中包含的内容,使用户的体验度不高。为解决上述问题,本发明采用Java语言提供了如下方法和装置。
如图2所示,本发明一实施例提供了一种离线消息的处理方法,包括:S1,根据自身状态获取离线消息,并将所述离线消息缓存至预设消息池中;S2,开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至所述主线程,以供所述主线程对所述离线消息进行解码和处理。
具体地,在详细描述本发明实施例的方案之前,对以下名词进行解释,以便于更好的理解本发明实施例中的方案。
进程(Process):指计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,Process也是程序的基础执行实体。
用户进程(MainProcess):指与用户可进行直接交互,在直接交互时前台可见的进程,用户进程也即是主进程,其优先级较高,不易被杀死。
通知(Notification):是消息的一种展示类型,通常会在顶部通知栏以一个面板形式进行展示,带有标题和关键词内容。
离线通知(Offline Notification,Off-Notification):是通知的一种类型,此类型通知由移动终端内部的系统负责代为创建和显示。本发明实施例中的离线通知实际上是经服务器离线推送、由系统代为创建和显示的通知,也就是离线推送的通知。
离线推送(Offline Push,Off-Push):是指APP进程处于死亡状态或APP后台服务进程处于死亡状态时,服务器推送的通知由系统代为接收。
线程(Tread):又可被称为轻量级进程(Lightweight Process,LWP),是执行程序的最小单元。一个标准的线程由线程标识、当前指令指针、寄存器集合和堆栈组成。
主线程(MainTread):又称界面线程(User Interface Tread,UI Tread),是指能够响应操作系统特定消息的线程。特定消息可包括界面消息、鼠标键盘消息和自定义消息等。主线程负责向界面(User Interface,UI)组件分发事件(包括绘制事件等),主进程不能进行耗时操作,即不能进行网络请求或数据库操作等,否则可能引起应用程序无响应。
应用程序无响应(Application Not Responding,ANR):在移动终端系统中,如果一个应用程序在一段时间内响应不够灵敏,系统会向用户显示一个对话框,这个对话框被称作ANR对话框。
工作线程(WorkThread):是一种单例模式的非UI线程,该线程不能进行界面操作,创建实例的个数与执行耗时操作的个数无关,在整个过程中,只会创建一个实例。
本发明中APP在集成厂商推送SDK时,配置其在用户点击离线通知后直接启动APP中的活动面板(LauncherActivity)。启动LauncherActivity后,APP中的后台推送服务进程(PushProcess)进行初始化。在PushProcess进行初始化时,采用动态注册方式注册离线消息广播接收者。
动态注册方式是指用代码动态的注册和注销广播,其特点是在代码中进行注册广播后,当应用程序关闭后,就不再接收广播。动态注册方式相比于静态注册方式,广播速度更快。
为防止其他广播干扰动态注册的广播对离线消息的正常接收,在注册离线消息广播接收者时,加入意图过滤器IntentFilter,IntentFilter的具体表示形式如下:
<IntentFilter>
<schame name=“com.douyu.push.offline.msg”/>
</IntentFilter>。
其中,意图过滤器需要将schame name匹配为PushProcess的包名。
PushProcess负责接收离线消息的PushService的运行优先级需设置为最高优先级,且PushProcess在进行初始化时PushService已经启动,从而达到消息的及时性。PushProcess将离线消息传递至APP中的MainProcess,以供MainProcess对离线消息进行处理。
本发明实施例中提供的离线消息的处理方法,执行主体为MainProcess,通过MainProcess对离线消息进行处理。本发明实施例提供的处理方法可应用于安卓系统、ios系统或其他操作系统中。
S1,MainProcess获取离线消息,并将离线消息缓存至预设消息池中。
MainProcess获取由PushProcess传递过来的离线消息,并将离线消息缓存至预设消息池(Message Pool)中。Message Pool是预先设置的、可存储离线消息的消息池。为了防止离线消息过多可能造成的MainProcess的主线程(MainTread)阻塞,要先将获取的离线消息全部加入Message Pool中。
S2,MainProcess开启一个新的线程WorkThread,利用WorkThread获取预设消息池内的离线消息并传递至MainProcess中的MainTread,MainTread完成对离线消息的解码和处理。
为了对离线消息进行前期处理,MainProcess开启一条新的WorkThread,以专门负责对离线消息的前期处理。
利用WorkThread获取Message Pool中的离线消息,并将离线消息传递至MainProcess中的MainTread,以供MainTread对接收到的离线消息做后续的解码和处理工作,显示离线消息的内容。由于后续的解码和处理工作属于本领域的现有技术,本发明实施例在此不再赘述。
随着移动终端内的系统不断更新版本,新版本的系统加强了自身权限,从而会导致一些权限的申请需要在APP启动时才能完成,因此直接跨过APP启动页跳转至指定的Activity将会造成因APP权限缺失而引发的APP运行异常。本实施例中,当用户点击离线通知时,直接启动APP的LauncherActivity,避免了可能出现的APP运行异常的状况的发生。同时,将离线消息缓存至Message Pool中,并通过MainProcess开启一条新的WorkThread,使离线消息经新开启的WorkThread传输至MainTread中,在MainTread中进行后续的解码和处理后实现离线消息的显示。使用户在点击离线通知后,可以及时的看到离线消息中包含的内容,使用户的体验度提高。
在上述实施例的基础上,预设消息池Message Pool可通过Queue数据结构创建。
具体地,Queue数据结构是一种特殊的线性表,是一种先进先出(first in firstout,FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。本实施例中采用Queue数据结构创建Message Pool,可保证先缓存的离线消息先被WorkThread获取,以实现离线消息的连续性和按时间先后获取性。
在上述实施例的基础上,S1具体包括:当MainTread所处的进程由第一状态转换为第二状态后,获取离线消息,并将离线消息缓存至Message Pool中。
当MainTread所处的进程处于第三状态时,则直接获取离线消息,并将离线消息缓存至Message Pool中。
这里MainTread所处的进程即用户进程,也就是MainProcess。在获取离线消息前,MainProcess所处的状态可以包括两种:运行状态和死亡状态。其中,本实施例中的第一状态为死亡状态,即MainProcess不处于运行状态,既不处于前台运行,也不处于后台运行的状态。第二状态为唤醒状态,是指MainProcess被唤醒的状态。这里的唤醒状态是MainProcess进入运行状态前的准备阶段。第三状态为运行状态,MainProcess可在前台运行或后台运行。
由于MainProcess只有在运行状态时才能够获取到离线消息,所以当MainProcess处于运行状态时可直接获取离线消息,当MainProcess处于死亡状态时,需等到MainProcess由死亡状态转换为唤醒状态后,才能实时获取离线消息。
获取离线消息前,MainProcess处于运行状态这种情况,可以是由于APP用户在移动终端收到离线通知时,首先做的不是点击离线通知,而是先点击APP对应的桌面图标,通过桌面图标进入APP,使APP中的MainProcess处于运行状态。但是通过桌面图标进入APP时,并不能观看到离线消息的内容,需要再点击离线通知。而当点击离线通知时,MainProcess处于运行状态。
获取离线消息前,MainProcess处于死亡状态这种情况,则可以是在移动终端收到离线通知后,用户直接点击离线通知实现的。这种情况下,由于MainProcess由死亡状态转换为唤醒状态需要一定的时间,所以PushProcess中的PushService需持续等待直至MainProcess由死亡状态转换为唤醒状态后,即MainProcess处于唤醒状态时,将离线消息传递至APP中的MainProcess,以供MainProcess对离线消息进行处理。
在上述实施例的基础上,S2具体包括:MainProcess利用WorkThread获取预设消息池内的离线消息,具体为通过轮询器Looper依次获取Message Pool中的离线消息,并将离线消息逐一传递至MainThread,以供MainThread对离线消息进行解码和处理。
Looper用于封装Android系统中线程的通知循环。默认情况下一个线程是不存在通知循环的,所以需要调用Looper.prepare()为MainThread创建一个通知循环,调用Looper.loop()来使通知循环起作用。使用Looper.prepare()和Looper.loop()即可实现在MainThread中对通知做后续的解码和处理。
在Looper将离线消息逐一传递至MainThread后、在主线程对离线消息进行解码和处理前,MainThread将离线消息加入消息队列。
当MainProces处于死亡状态时,由于从可获取离线消息的唤醒状态至运行状态还需要一定的时间,所以在将离线消息逐一传递至MainThread后,MainThread将离线消息加入消息队列,以等待MainProces进入运行状态时从消息队列中获取离线消息并对离线消息做后续的解码和处理。
消息队列通常可为阻塞队列(BlockingQueue)或非阻塞队列(Non-BlockingQueue),阻塞队列和非阻塞队列关注的是程序在等待调用结果(调用结果可能是通知、返回值等)时的状态。阻塞队列是指调用结果返回之前,调用阻塞队列的线程会被挂起。调用阻塞队列的线程只有在得到调用结果之后才会返回。而非阻塞队列是指在调用结果返回之前,调用阻塞队列的线程不会被阻塞。
Non-BlockingQueue又称ConcurrentLinkedQueue,是一个基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当添加一个元素时,会添加到队列的尾部,当获取一个元素时,它会返回队列头部的元素。
BlockingQueue主要有三种,包括:SynchronousQueue、LinkedBlockingQueue和ArrayListBlockingQueue。SynchronousQueue没有存储能力,所以除非另一个线程已经准备好参与移交工作,否则put和take会一直阻止。SynchronousQueue是无界的,是一种无缓冲的等待队列,但是由于该Queue本身的特性,在某次添加元素后必须等待其他线程取走后才能继续添加。
LinkedBlockingQueue同样是无界的,是一个无界缓存的等待队列。它是基于链表的阻塞队列,内部维持着一个数据缓冲队列(该队列由链表构成)。当向队列中放入一个数据时,队列会获取数据,并缓存在队列内部,只有当队列缓冲区达到最大值缓存容量时才会阻塞放入的数据队列。
ArrayListBlockingQueue是有界的,是一个有界缓存的等待队列。
它是基于数组的阻塞队列,与LinkedBlockingQueue类似,内部维持着一个定长数据缓冲队列(该队列由数组构成)。ArrayListBlockingQueue内部还保存着两个整形变量,分别标识着队列的头部和尾部在数组中的位置。ArrayBlockingQueue和LinkedBlockingQueue间还有一个明显的不同之处,在于前者在插入或删除元素时不会产生或销毁任何额外的对象实例,而后者则会生成一个额外的Node对象。本实施例中,为了保证消息获取的实时性,可优选选用阻塞队列中的LinkedBlockingQueue作为消息队列,但并不限于此。
在上述实施例的基础上,S1具体包括:MainProces通过接口定义语言将意图服务进程与推送服务进程进行绑定,通过意图服务进程获取所述推送服务进程接收到的所述离线消息。
具体地,MainProcess利用意图服务进程(Intent)与PushProcess中的PushService通过接口定义语言(Interface Definition Language,IDL)进行绑定,PushService通过Intent将其接收到的离线消息传递至MainProcess。
这里的IDL是一种系统内部进程通信接口的描述语言,通过它可以定义进程间的通信接口。IDL可包括安卓接口定义语言(Android Interface Definition Language,AIDL)、微软接口定义语言(Microsoft Interface Definition Language,MIDL)等。
在上述实施例的基础上,在获取推送服务进程接收到的离线消息的过程中,意图服务服务的运行状态可为持续运行或间断运行。若为间断运行,两次运行的时间间隔可根据需要进行设置。
但为了保证MainProcess能够实时的获取到离线消息,本实施例中采用在获取离线消息的过程中,Intent的运行状态保持持续运行,即设置为ALL-ACTIVE。
为保证先后两次获取的离线消息不受干扰,在每次获取的离线消息得到解码和处理后Message Pool自动清空其内部缓存的离线消息。即当意图服务服务中的耗时服务停止时,Message Pool自动清空其内部缓存的离线消息。
如图2所示,本发明的另一实施例提供了一种离线消息的处理装置,包括:通知获取模块1和通知处理模块2。
其中,通知获取模块1用于获取离线消息,并将所述离线消息缓存至预设消息池中;通知处理模块2用于开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
具体地,离线消息的处理流程与上述方法类实施例是一一对应的,在此不再赘述。
本发明提供的离线消息的处理装置,通过通知获取模块获取离线消息,由通知处理模块对离线消息进行进行解码和处理,使用户在点击离线通知后,可以及时的看到离线消息中包含的内容,使用户的体验度提高。
本发明另一实施例提供了一种离线消息的处理装置,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器。
其中,所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令以执行上述各方法实施例所提供的处理方法,例如包括:S1,获取离线消息,并将所述离线消息缓存至预设消息池中;S2,开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
本发明另一实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的处理方法,例如包括:S1,获取离线消息,并将所述离线消息缓存至预设消息池中;S2,开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
本发明另一实施例提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的处理方法,例如包括:S1,获取离线消息,并将所述离线消息缓存至预设消息池中;S2,开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种离线消息的处理方法,其特征在于,包括:
S1,获取离线消息,并将所述离线消息缓存至预设消息池中;
S2,开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
2.根据权利要求1所述的处理方法,其特征在于,S1具体包括:
当所述主线程所处的进程由第一状态转换为第二状态后,或处于第三状态时,获取离线消息,并将所述离线消息缓存至预设消息池中。
3.根据权利要求2所述的处理方法,其特征在于,S2具体包括:
利用所述新的线程通过轮询器Looper依次获取所述预设消息池中的所述离线消息,并将所述离线消息逐一传递至所述主线程,以供所述主线程对所述离线消息进行解码和处理。
4.根据权利要求3所述的处理方法,其特征在于,在将所述离线消息逐一传递至所述主线程后、所述主线程对所述离线消息进行解码和处理前还包括:
将所述离线消息加入消息队列,以供所述主进程从所述消息队列中获取所述离线消息并进行解码和处理。
5.根据权利要求4所述的处理方法,其特征在于,所述消息队列具体为:阻塞队列。
6.根据权利要求2-5中任一项所述的处理方法,其特征在于,S1中所述获取离线消息具体包括:
通过接口定义语言将意图服务进程与推送服务进程进行绑定,通过所述意图服务进程获取所述推送服务进程接收到的所述离线消息。
7.根据权利要求6所述的处理方法,其特征在于,在获取所述推送服务进程接收到的所述离线消息的过程中,所述意图服务进程的运行状态为持续运行。
8.一种离线消息的处理装置,其特征在于,包括:
通知获取模块,用于获取离线消息,并将所述离线消息缓存至预设消息池中;
通知处理模块,用于开启新的线程,利用所述新的线程获取所述预设消息池内的所述离线消息,并传递至主线程,以供所述主线程对所述离线消息进行解码和处理。
9.一种计算机程序产品,其特征在于,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行如权利要求1至7任一所述的处理方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710517258.2A CN107391274B (zh) | 2017-06-29 | 2017-06-29 | 离线消息的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710517258.2A CN107391274B (zh) | 2017-06-29 | 2017-06-29 | 离线消息的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391274A true CN107391274A (zh) | 2017-11-24 |
CN107391274B CN107391274B (zh) | 2020-06-16 |
Family
ID=60334473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710517258.2A Active CN107391274B (zh) | 2017-06-29 | 2017-06-29 | 离线消息的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391274B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322501A (zh) * | 2017-12-22 | 2018-07-24 | 创新科软件技术(深圳)有限公司 | 一种消息推送方法和装置 |
CN110035030A (zh) * | 2018-01-11 | 2019-07-19 | 武汉斗鱼网络科技有限公司 | 一种防止广播反注册异常方法、存储介质、设备及系统 |
CN110321358A (zh) * | 2019-06-26 | 2019-10-11 | 深圳供电局有限公司 | 一种用户数据整编的方法及装置 |
CN114422466A (zh) * | 2022-01-20 | 2022-04-29 | 深圳市元征科技股份有限公司 | 离线消息处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426964A (zh) * | 2013-08-29 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置及终端、计算机存储介质 |
CN105872025A (zh) * | 2016-02-08 | 2016-08-17 | 物联智慧科技(深圳)有限公司 | 推送消息传输方法及消息传输系统 |
CN106371824A (zh) * | 2016-08-23 | 2017-02-01 | 广州优视网络科技有限公司 | 便携式设备及应用程序弹出消息显示控制方法和装置 |
-
2017
- 2017-06-29 CN CN201710517258.2A patent/CN107391274B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426964A (zh) * | 2013-08-29 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置及终端、计算机存储介质 |
CN105872025A (zh) * | 2016-02-08 | 2016-08-17 | 物联智慧科技(深圳)有限公司 | 推送消息传输方法及消息传输系统 |
CN106371824A (zh) * | 2016-08-23 | 2017-02-01 | 广州优视网络科技有限公司 | 便携式设备及应用程序弹出消息显示控制方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322501A (zh) * | 2017-12-22 | 2018-07-24 | 创新科软件技术(深圳)有限公司 | 一种消息推送方法和装置 |
CN108322501B (zh) * | 2017-12-22 | 2021-04-27 | 深圳创新科软件技术有限公司 | 一种消息推送方法和装置 |
CN110035030A (zh) * | 2018-01-11 | 2019-07-19 | 武汉斗鱼网络科技有限公司 | 一种防止广播反注册异常方法、存储介质、设备及系统 |
CN110035030B (zh) * | 2018-01-11 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 一种防止广播反注册异常方法、存储介质、设备及系统 |
CN110321358A (zh) * | 2019-06-26 | 2019-10-11 | 深圳供电局有限公司 | 一种用户数据整编的方法及装置 |
CN114422466A (zh) * | 2022-01-20 | 2022-04-29 | 深圳市元征科技股份有限公司 | 离线消息处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107391274B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104252389B (zh) | 应用程序运行方法、系统 | |
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
CN106484509B (zh) | 一种弹窗的输出方法、装置及终端 | |
JP5084827B2 (ja) | 永続性を管理する方法、装置、及びコンピュータ・プログラム | |
CN107479990A (zh) | 一种分布式软件服务系统 | |
CN110300328B (zh) | 一种视频播放控制方法、装置及可读存储介质 | |
CN107391274A (zh) | 离线消息的处理方法及装置 | |
CN101477491B (zh) | 一种统计函数运行状态的方法和装置 | |
CN108008950B (zh) | 一种用户界面更新的实现方法及装置 | |
CN105630461A (zh) | 一种android应用界面的管理方法 | |
US8886787B2 (en) | Notification for a set of sessions using a single call issued from a connection pool | |
US11327816B2 (en) | Monitoring components in a service framework | |
CN111190673B (zh) | 基于操作监测的页面展示方法、装置和电子设备 | |
WO2020063040A1 (zh) | 处理器核心配置方法、装置、终端及存储介质 | |
JP2021518955A (ja) | プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体 | |
CN110532045A (zh) | 一种跨进程调用方法及相关装置 | |
CN110442819A (zh) | 数据处理方法、装置、存储介质及终端 | |
US10521275B2 (en) | Asynchronous dispatcher for application framework | |
CN113743879A (zh) | 一种自动化规则处理方法、系统以及相关设备 | |
US20150120607A1 (en) | System and method for customer event email consolidation and delivery | |
CN114780218A (zh) | 应用管控方法、装置、存储介质及电子设备 | |
CN109547563B (zh) | 消息推送处理方法、装置、存储介质及服务器 | |
CN111488207B (zh) | 应用进程保活方法、装置、网络设备及存储介质 | |
US20090276789A1 (en) | Universal client and framework | |
CN102253833A (zh) | 一种基于安卓Android平台下应用的操作方法及装置 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240206 Address after: Room 801, 85 Kefeng Road, Huangpu District, Guangzhou City, Guangdong Province Patentee after: Yami Technology (Guangzhou) Co.,Ltd. Country or region after: China Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. Country or region before: China |