CN113031921A - 一种网络话机应用软件的开发框架及实现方法 - Google Patents

一种网络话机应用软件的开发框架及实现方法 Download PDF

Info

Publication number
CN113031921A
CN113031921A CN202011639734.6A CN202011639734A CN113031921A CN 113031921 A CN113031921 A CN 113031921A CN 202011639734 A CN202011639734 A CN 202011639734A CN 113031921 A CN113031921 A CN 113031921A
Authority
CN
China
Prior art keywords
application software
state
event
manager
network phone
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
CN202011639734.6A
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.)
Nanjing Hanlong Technology Co ltd
Original Assignee
Nanjing Hanlong 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 Nanjing Hanlong Technology Co ltd filed Critical Nanjing Hanlong Technology Co ltd
Priority to CN202011639734.6A priority Critical patent/CN113031921A/zh
Publication of CN113031921A publication Critical patent/CN113031921A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Abstract

本发明设计了一种网络话机应用软件的开发框架及其实现方法,将复杂的网络话机应用拆分成不同的应用软件及其中不同的状态,并提供应用软件的管理机制对各应用软件进行管理。本发明设计的框架使得网络话机复杂的应用逻辑分割成各个App,再细分成App中的状态,而状态的跳转和状态生命周期的进行由框架负责,提高软件稳定性;逻辑分离,有效提高了软件可维护性和软件可扩展性;有效降低了内存的浪费;降低了代码的耦合,大大简化了网络话机的开发过程,提升了系统的可维护性;软件开发者只需要关注应用逻辑,有效提高开发效率。

Description

一种网络话机应用软件的开发框架及实现方法
技术领域
本发明属于通信技术领域,涉及一种网络话机应用软件的开发框架及其实现方法。
背景技术
在网络话机的应用软件设计开发过程中,需要实现许多业务逻辑,由于网络功能的复杂性以及硬件平台的特殊性,若没有一个清晰的软件框架,各种应用逻辑便会混合在一起,导致软件可维护性变差,甚至到无法维护的阶段。
在传统的话机应用软件的开发过程中,并没有软件框架的概念。当前的应用软件开发通常以一个个窗口为主体,应用软件界面与应用服务的逻辑会掺杂在一起,界限不分明。传统网络话机系统如图1所示。可以看出,各个应用以不同的窗口为主,应用窗口逻辑甚至会与应用服务逻辑混合,两者之间的界限模糊,无法分开。整个网络话机系统并没有明确的层次结构。
此外,传统的话机应用软件可扩展性低,这就给应用软件的功能添加和性能优化带来了限制。在传统话机软件的运行过程中,需要将所有应用软件加载至话机中,会导致内存的滥用,长时间使用很可能有卡顿甚至死机现象发生。
发明内容
为高效开发网络话机应用,解决网络话机应用软件高耦合,低内聚,维护性差,可扩展性低等问题,本发明设计了一种网络话机应用软件的开发框架及其实现方法,提供一种简单,轻量,性能高,对硬件要求低,对内存需求少的适用于网络话机的框架。
为了达到上述目的,本发明提供如下技术方案:
一种网络话机应用软件的开发框架,包括:应用软件管理器、事件派遣模块、应用软件的实现模型;各应用软件具有若干状态,应用软件的实现模型为应用软件和各应用软件中的状态设计了生命周期,各应用软件具有生命周期的若干阶段,各状态具有生命周期的若干阶段,通过事件驱动状态跳转;
所述应用软件管理器用于启动及切换应用软件,网络话机启动时,各应用软件在管理器上注册应用软件启动的事件信号,应用软件启动后会将应用软件存放在栈中;
所述事件派遣模块用于沿着应用软件管理器-->应用软件-->状态的三层顺序依次往下发送事件,被发送的任何一层能够决定是否要拦截事件,若不拦截,则会一直向下发送到状态层为止,若拦截则由本层处理事件,如处理失败则逐层向上发送至上一层处理。
进一步的,只有存放在栈中的应用软件才分配内存。
进一步的,所述应用软件的生命周期包括:启动、激活、保存数据、暂停、完结;应用软件中的状态的生命周期包括:进入、激活、恢复快照、保存快照、暂停、退出。
进一步的,所述启动及切换应用软件功能通过栈实现,具体包括如下步骤:
1.发送应用软件启动事件信号,转步骤2;
2.判断应用软件是否存在于应用软件管理器的栈中,若不在,转步骤3;若在,判断是否是单例模式,若是,转步骤4,若不是转步骤3;
3.创建应用软件实例,放入栈中,启动应用软件,转步骤5;
4.将该应用软件上的应用软件移除栈中,恢复应用软件,转步骤5;
5.运行应用软件直到应用软件主动结束,或应用软件管理器强制结束,随后应用软件管理器响应将应用软件退栈并释放应用软件;
6.应用软件管理器将此时栈顶的应用软件恢复。
进一步的,状态的进入通过如下方式实现:调用应用软件的启动和激活回调,进入对应状态,再调用对应状态的进入、激活、恢复快照回调。
进一步的,状态的跳转通过如下方式实现:
通过onMessage回调处理事件信号,若有状态变化,则使用信号驱动进行状态跳转,调用此状态的保存快照、暂停、退出回调,再调用下个状态的进入、激活、恢复快照回调,从而完成当前状态的退出动作和下一状态的进入动作。
一种网络话机应用软件的开发框架实现方法,包括如下步骤:
步骤一,网络话机上开机,初始化应用软件管理器和各应用软件,发送主页面应用软件启动事件信号,创建应用软件实例,放入应用软件管理器的栈中,启动应用软件;
步骤二,调用应用软件的启动和激活回调,进入对应状态,再调用对应状态的进入、激活、恢复快照回调,初始化GUI和数据;
步骤三,画出主界面,主界面应用软件运行中,通过onMessage回调处理事件信号,若有状态变化,则使用信号驱动进行状态跳转,调用此状态的保存快照、暂停、退出回调,再调用下个状态的进入、激活、恢复快照回调,从而完成当前状态的退出动作和下一状态的进入;
步骤四,最后退出应用软件,调用当前状态的保存快照、暂停、退出回调,再调用应用软件的保存数据、暂停、完结回调,做结束操作,应用软件退栈,释放应用软件。
进一步的,处理事件信号时沿着应用软件管理器-->应用软件-->状态的三层顺序依次往下发送事件,被发送的任何一层能够决定是否要拦截事件,若不拦截,则会一直向下发送到状态层为止,若拦截则由本层处理事件,如处理失败则逐层向上发送至上一层处理。
与现有技术相比,本发明具有如下优点和有益效果:
1.本发明设计的框架使得网络话机复杂的应用逻辑分割成各个App,再细分成App中的状态,而状态的跳转和状态生命周期的进行由框架负责,提高软件稳定性;逻辑分离,有效提高了软件可维护性和软件可扩展性。
2.框架采用栈对App进行管理,使得App之间的交互和切换都十分简单,这样简单的实现就完成App管理的需求,并不需要像安卓那样使用进程间通信的复杂方法,这也降低了软件开发者的理解和开发的难度。
3.在传统的话机复杂逻辑应用的开发中,往往只追求完成功能,导致后续的开发和维护困难。本发明框架App中引入状态概念,用于处理逻辑分割的问题,从而使得网络话机实现十分复杂、庞大逻辑的应用需求。状态的概念可以使拥有复杂逻辑的应用将逻辑拆分成几个到十几个不等的状态,单个状态逻辑的实现不会太难。化整为零,从整体出发设计不同状态,自下而上开发整体功能,使得复杂应用的开发变得更加简单,同时提高了软件的稳定性,维护性,可扩展性。
4.框架中的App并没有实体,只有当用户使用到这个App的时候,才会将App的应用界面绘制出来(此为最耗费内存的时刻)。其他时候的App,要么没有创建,要么只是一个记录了App相关信息的数据结构体,从而大大降低了对内存的需求,有效降低了内存的浪费。
5.降低了代码的耦合,大大简化了网络话机的开发过程,提升了系统的可维护性。
6.框架中的App为抽象的逻辑实体,且为开发者提供的App开发接口,让软件开发者只需关注这一App的逻辑,使得App的内聚性大大提高。本发明在网络话机系统中模拟出App独立实体的感觉,软件开发者只需要关注应用逻辑,有效提高开发效率。
附图说明
图1为传统网络话机系统开发框架示意图。
图2为本发明提供的网络话机应用软件的开发框架示意图。
图3为App和App中的状态生命周期示意图。
图4为App启动流程。
图5为App退出流程。
图6为栈中无App时AppManager栈的情况变化。
图7为栈中有该App而App启动模式为单例模式时栈的情况变化。
图8为栈中有该App而App启动模式为多实例模式栈的情况变化。
图9为App出栈时栈的情况变化。
图10为本框架的事件派遣机制。
图11为本发明提供的网络话机应用软件的开发框架实现方法流程示意图。
图12为采用状态管理的通话软件一路通话的建立和拆除的流程图。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
应用本发明开发框架的整个话机应用系统只有一个进程,框架采用单进程自调度的方法实现App之间的交互和切换,使得仿佛有多个应用(多个应用进程)在话机上运行。图2为本发明提供的网络话机应用软件的开发框架的一种示例,其中将复杂的网络话机应用拆分成不同的应用软件(App)及App中不同的状态,并提供应用软件的管理机制(AppManager)对各应用软件进行管理,采用事件派遣机制对事件进行派遣。图2所示的开发框架包括应用软件,如main App(主应用软件)、setting App(设置应用)、PhoneBook App(电话簿应用)、Call App(通话应用软件)等,以及AppManager管理器,和各服务模块,如Call Service(通话服务模块,用于处理通话建立、保持、挂断等相关逻辑)、PhoneBookService(电话簿服务模块,用于实现电话中联系人的增、删、改、查功能)、Message Service(短消息服务模块,用于管理话机的文字消息和语音消息)等。
应用软件实现模型将复杂逻辑拆分成逻辑分明的状态,通过事件驱动状态跳转,实现应用的功能。这样庞大的逻辑便会化整为零,复杂的应用会变成一个个简单的状态。应用软件的实现模型为App和App中的状态设计了生命周期,如图3所示。图3中,App的生命周期包括:启动、激活、保存数据、暂停、完结,App中的状态的生命周期包括:进入、激活、恢复快照、保存快照、暂停、退出。通过这些生命周期的回调,App开发者,不需要理解话机软件框架的具体内容,只需要在特定的回调中做相应的事情就能够实现应用的功能。这样的App实现模型,将App中状态跳转和状态生命周期,状态管理的逻辑高度内聚,使得业务逻辑与架构逻辑彻底剥离。
以通话软件的一通电话为例,如图12所示,当有来电事件时,App启动处于振铃态;摘机事件使得App当前状态跳转至通话态,此时,进行通话;保持事件使得状态跳转至通话保持态;挂机事件使得状态转入通话结束,退出App。这样的状态分割,和状态的跳转便实现了一路通话。
应用软件如何启动及切换,由应用软件的管理器解决。在网络话机启动时,各App会在管理器上注册App启动的事件信号,App启动后会将App存放在栈中,App运行的过程如图4、图5所示,包括如下步骤:
1.发送App启动事件信号,转步骤2;
2.判断App是否存在于App管理器的栈中,若不在,转步骤3;若在,判断是否是单例模式,若是,转步骤4,若不是转步骤3;
当栈中有该App,而App启动模式为多实例模式,栈变化如图8所示,启动AApp,创建AApp实例,压入栈内并启动App。
3.创建App实例,放入栈中,启动App,转5;
本步骤中AppManager栈的情况变化如图6所示,先启动mainApp,创建mainApp实例,压入栈内并启动;
4.将该App上的App移除栈中,恢复App,转5;
本例中,栈中有该App,而App启动模式为单例模式,栈变化如图7所示,启动AApp,移除在该App上面的所有App,图7中,B App在AApp之上,即将B App出栈并释放,恢复AApp。
5.运行App直到App主动结束,或App管理器强制结束,随后App管理器响应将App退栈并释放App;
App出栈时栈变化如图9所示:AApp申请退出,AppManager响应,将AApp退栈并释放AApp
6.AppManager将此时栈顶的App恢复。
App的管理机制使得网络话机应用软件可以独立的分割成一个个的App。各App之间切换的功能,使得只有入栈的App才会分配内存,避免了内存的浪费。
整个框架由事件来驱动,采用了如图10所示的事件派遣机制,由事件派遣模块实现。事件会先被发送到AppManager,事件会沿着AppManager-->App-->State(当前所处的状态)依次往下发送,每一层可以决定自己是否要拦截事件,若不拦截,则会一直发送到State层为止。若拦截,则处理事件,结果处理失败了,事件会逐级上抛,由上一层处理。这样的事件派遣机制,保证了事件得到充分的处理。
具体的说,包括如下步骤:
1.事件发送开始;
2.由AppManager派送事件;
3.判断AppManager是否拦截该事件,如是则转入步骤4,如否则转入步骤5;
4.由AppManager处理该事件,处理完毕后事件发送完结;
5.事件被派送到App,由App进行下一步派送;
6.判断App是否拦截该事件,如是则转入步骤7,如否则转入步骤8;
7.由App处理该事件,当处理成功时事件发送完结,当处理失败时转入步骤4;
8.事件被派送到State,由State处理该事件,当处理成功时事件发送完结,当处理失败时转入步骤7。
本发明还提供了网络话机应用软件的开发框架实现方法,如图11所示,包括如下步骤:
步骤一,网络话机上开机,初始化App管理器和各App,发送主页面App启动事件信号,创建App实例,放入App管理器的栈中,启动App。在App启动过程中应用上述管理器对应用软件的启动及切换机制。
步骤二,调用App的启动和激活回调,进入对应状态,再调用对应状态的进入、激活、恢复快照回调,主要是初始化GUI和数据。
步骤三,画出主界面,主界面App运行中,通过onMessage(事件处理回调)回调处理事件信号,若有状态变化,则使用信号驱动进行状态跳转,由此状态跳转自下一个状态,调用此状态的保存快照、暂停、退出回调,再调用下个状态的进入、激活、恢复快照回调,从而完成当前状态的退出动作和下一状态的进入。处理事件信号时采用上述事件派遣机制。
步骤四,最后退出App,调用当前状态的保存快照、暂停、退出回调,再调用App的保存数据、暂停、完结回调,做结束操作,App退栈,释放App。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (8)

1.一种网络话机应用软件的开发框架,其特征在于,包括:应用软件管理器、事件派遣模块、应用软件的实现模型;各应用软件具有若干状态,应用软件的实现模型为应用软件和各应用软件中的状态设计了生命周期,各应用软件具有生命周期的若干阶段,各状态具有生命周期的若干阶段,通过事件驱动状态跳转;
所述应用软件管理器用于启动及切换应用软件,网络话机启动时,各应用软件在管理器上注册应用软件启动的事件信号,应用软件启动后会将应用软件存放在栈中;
所述事件派遣模块用于沿着应用软件管理器-->应用软件-->状态的三层顺序依次往下发送事件,被发送的任何一层能够决定是否要拦截事件,若不拦截,则会一直向下发送到状态层为止,若拦截则由本层处理事件,如处理失败则逐层向上发送至上一层处理。
2.根据权利要求1所述的网络话机应用软件的开发框架,其特征在于,只有存放在栈中的应用软件才分配内存。
3.根据权利要求1所述的网络话机应用软件的开发框架,其特征在于,所述应用软件的生命周期包括:启动、激活、保存数据、暂停、完结;应用软件中的状态的生命周期包括:进入、激活、恢复快照、保存快照、暂停、退出。
4.根据权利要求1所述的网络话机应用软件的开发框架,其特征在于,所述启动及切换应用软件功能通过栈实现,具体包括如下步骤:
(1)发送应用软件启动事件信号,转步骤2;
(2)判断应用软件是否存在于应用软件管理器的栈中,若不在,转步骤3;若在,判断是否是单例模式,若是,转步骤4,若不是转步骤3;
(3)创建应用软件实例,放入栈中,启动应用软件,转步骤5;
(4)将该应用软件之上的应用软件移除栈中,恢复应用软件,转步骤5;
(5)运行应用软件直到应用软件主动结束,或应用软件管理器强制结束,随后应用软件管理器响应将应用软件退栈并释放应用软件;
(6)应用软件管理器将此时栈顶的应用软件恢复。
5.根据权利要求3所述的网络话机应用软件的开发框架,其特征在于,状态的进入通过如下方式实现:调用应用软件的启动和激活回调,进入对应状态,再调用对应状态的进入、激活、恢复快照回调。
6.根据权利要求3所述的网络话机应用软件的开发框架,其特征在于,状态的跳转通过如下方式实现:
通过onMessage回调处理事件信号,若有状态变化,则使用信号驱动进行状态跳转,调用此状态的保存快照、暂停、退出回调,再调用下个状态的进入、激活、恢复快照回调,从而完成当前状态的退出动作和下一状态的进入动作。
7.一种网络话机应用软件的开发框架实现方法,其特征在于,包括如下步骤:
步骤一,网络话机上开机,初始化应用软件管理器和各应用软件,发送主页面应用软件启动事件信号,创建应用软件实例,放入应用软件管理器的栈中,启动应用软件;
步骤二,调用应用软件的启动和激活回调,进入对应状态,再调用对应状态的进入、激活、恢复快照回调,初始化GUI和数据;
步骤三,画出主界面,主界面应用软件运行中,通过onMessage回调处理事件信号,若有状态变化,则使用信号驱动进行状态跳转,调用此状态的保存快照、暂停、退出回调,再调用下个状态的进入、激活、恢复快照回调,从而完成当前状态的退出动作和下一状态的进入;
步骤四,最后退出应用软件,调用当前状态的保存快照、暂停、退出回调,再调用应用软件的保存数据、暂停、完结回调,做结束操作,应用软件退栈,释放应用软件。
8.根据权利要求1所述的网络话机应用软件的开发框架实现方法,其特征在于,处理事件信号时沿着应用软件管理器-->应用软件-->状态的三层顺序依次往下发送事件,被发送的任何一层能够决定是否要拦截事件,若不拦截,则会一直向下发送到状态层为止,若拦截则由本层处理事件,如处理失败则逐层向上发送至上一层处理。
CN202011639734.6A 2020-12-31 2020-12-31 一种网络话机应用软件的开发框架及实现方法 Pending CN113031921A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011639734.6A CN113031921A (zh) 2020-12-31 2020-12-31 一种网络话机应用软件的开发框架及实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011639734.6A CN113031921A (zh) 2020-12-31 2020-12-31 一种网络话机应用软件的开发框架及实现方法

Publications (1)

Publication Number Publication Date
CN113031921A true CN113031921A (zh) 2021-06-25

Family

ID=76460554

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011639734.6A Pending CN113031921A (zh) 2020-12-31 2020-12-31 一种网络话机应用软件的开发框架及实现方法

Country Status (1)

Country Link
CN (1) CN113031921A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050288001A1 (en) * 2004-06-23 2005-12-29 Foster Derek J Method and system for an application framework for a wireless device
CN1889644A (zh) * 2006-01-13 2007-01-03 深圳创维-Rgb电子有限公司 使用状态机构建电视机软件系统的方法
CN101311902A (zh) * 2007-05-22 2008-11-26 上海宇梦通信科技有限公司 关联多实例状态机系统及其实现方法
CN103902359A (zh) * 2014-03-31 2014-07-02 深圳创维-Rgb电子有限公司 基于Android系统内存优化与应用调度方法及系统
CN107977230A (zh) * 2017-12-01 2018-05-01 广东雅达电子股份有限公司 一种基于状态机机制的应用管理方法
CN109151582A (zh) * 2018-08-16 2019-01-04 海信电子科技(深圳)有限公司 基于Linux机顶盒的多应用管理方法、装置及终端

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050288001A1 (en) * 2004-06-23 2005-12-29 Foster Derek J Method and system for an application framework for a wireless device
CN1889644A (zh) * 2006-01-13 2007-01-03 深圳创维-Rgb电子有限公司 使用状态机构建电视机软件系统的方法
CN101311902A (zh) * 2007-05-22 2008-11-26 上海宇梦通信科技有限公司 关联多实例状态机系统及其实现方法
CN103902359A (zh) * 2014-03-31 2014-07-02 深圳创维-Rgb电子有限公司 基于Android系统内存优化与应用调度方法及系统
CN107977230A (zh) * 2017-12-01 2018-05-01 广东雅达电子股份有限公司 一种基于状态机机制的应用管理方法
CN109151582A (zh) * 2018-08-16 2019-01-04 海信电子科技(深圳)有限公司 基于Linux机顶盒的多应用管理方法、装置及终端

Similar Documents

Publication Publication Date Title
CN101673216B (zh) 应用程序关闭方法和装置
CN1968123B (zh) 动态多方、多个媒体通信自动协调的方法与装置
US20060200738A1 (en) System and method for modifying a mobile device application
CN106020829A (zh) 在多环境操作系统中多个环境之间切换的系统和方法
CN102567111A (zh) 一种异步过程调用的方法、系统和终端设备
CN101944048B (zh) 一种终端在音频资源冲突时的管理方法及该终端
CN111767090A (zh) 小程序的启动方法、装置、电子设备以及存储介质
CN106445617A (zh) 基于Android的应用程序冷启动优化方法及系统
CN102200909A (zh) 一种移动终端统一界面方法及系统
CN107797874A (zh) 一种基于嵌入式jetty和spark on yarn框架的资源管控方法
CN113031921A (zh) 一种网络话机应用软件的开发框架及实现方法
CN110825455A (zh) 一种应用程序运行方法、装置和系统
CN101944033A (zh) 一种嵌入式系统中动态支持多种协议的装置及方法
CN103019809A (zh) 业务处理装置和方法、及业务处理控制装置
CN114840310B (zh) 容器创建方法、装置、电子设备和计算机可读存储介质
CN105677407A (zh) 应用程序关闭方法和装置
CN112162840B (zh) 一种基于中断重入机制的协程处理及管理方法
CN105589738A (zh) 一种智能分屏的并发处理方法及相应的智能终端
CN1928826A (zh) 多任务调度系统和方法
CN110389791B (zh) 组件调度方法、装置、设备及存储介质
CN114090104A (zh) 一种小程序启动控制方法和装置
CN112035283A (zh) 一种基于分布式量子计算服务排队和执行的方法及系统
CN112612428A (zh) 一种提升Codeigniter框架性能的方法及装置
CN105391872B (zh) 基于重构技术实现多应用网络请求能耗优化的方法
WO2024037553A1 (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