CN103702191B - 一种避免智能电视启动器出现anr的方法 - Google Patents

一种避免智能电视启动器出现anr的方法 Download PDF

Info

Publication number
CN103702191B
CN103702191B CN201310685853.9A CN201310685853A CN103702191B CN 103702191 B CN103702191 B CN 103702191B CN 201310685853 A CN201310685853 A CN 201310685853A CN 103702191 B CN103702191 B CN 103702191B
Authority
CN
China
Prior art keywords
starter
key
systems
bag name
press event
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
CN201310685853.9A
Other languages
English (en)
Other versions
CN103702191A (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.)
TCL Corp
Original Assignee
TCL Corp
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 TCL Corp filed Critical TCL Corp
Priority to CN201310685853.9A priority Critical patent/CN103702191B/zh
Publication of CN103702191A publication Critical patent/CN103702191A/zh
Application granted granted Critical
Publication of CN103702191B publication Critical patent/CN103702191B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

一种避免智能电视启动器出现ANR的方法,监控系统中应用程序的启动器包名;根据系统中存在的所述启动器包名判断启动器是否在系统中启动,当启动器已启动,系统抛弃底层的按键事件;根据系统中存在的所述启动器包名判断启动器是否在系统中完成启动,当启动器启动完毕,系统恢复接收底层的按键事件。本发明方法通过设置系统属性来识别启动器的启动状态,当启动器处于启动状态时抛弃所有底层传来的按键事件,按键事件不传递给上层应用,以使应用程序在使用过程中对底层按键事件无法识别并不响应弹出对话框,当启动器启动完成后才修改系统属性以恢复底层按键事件的正常传递,有效解决了启动器启动过程中ANR事件的发生,改善了用户的使用体验。

Description

一种避免智能电视启动器出现ANR的方法
技术领域
本发明涉及智能电视操作系统,尤其涉及一种避免智能电视启动器出现ANR的方法。
背景技术
目前,智能电视普遍采用Android操作系统作为操作平台,在Android平台上,如果智能电视应用程序有一段时间响应不够灵敏,系统会向用户显示一个提示应用程序无响应的对话框,这个对话框称为应用程序无响应(ANR:Application Not Responding)对话框,用户可以选择等待让应用程序继续运行,也可以选择“强制关闭”。对于一个运行合理流畅的应用程序而言,系统提示ANR对话框给用户会带来不好的用户体验。
现有技术Android应用程序通常运行在一个单独的线程(如main)中,应用程序所做的事情如果在主线程中占用太多时间就会引发ANR对话框,因为应用程序没有机会自己处理输入时间或者Intent广播。可见,应用程序对响应性能的设计非常重要,这样系统才不会显示ANR对话框给用户。通常情况下,Android系统中Activity(Android中一个负责与用户交互的组件)的最长执行时间为5秒,Broadcast Receiver的最长执行时间为10秒,因此,运行在主线程里的任何方法都应该尽可能少做事情,特别是,Activity在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算(例如,改变位图尺寸),而应该在子线程中完成;同时,主线程应该为子线程提供一个Handler(Handler主要用于接受子线程发送的数据,并用此数据配合主线程更新界面),以便子线程完成时能够提交给主线程,这种方式设计应用程序,将能保证主线程保持对输入的响应并能避免5秒输入时间的超时引发ANR对话框。然而,通过这种方法来避免ANR对话框或者通过延长触发ANR对话框时间来避免也不可能完全避免ANR对话框现象的发生,在一些场景下,比如智能电视启动器在第一次启动的5~10秒的预加载过程中,用户频繁的按键输入可能会导致启动器加载过程中出现ANR对话框,影响用户的使用体验。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足之处,本发明为解决现有技术的缺陷和不足,提出一种避免智能电视使用过程中出现ANR对话框现象的处理方法。
本发明解决技术问题所采用的技术方案如下:
一种避免智能电视启动器出现ANR的方法,包括如下步骤:
监控系统中应用程序的启动器包名;
根据系统中存在的所述启动器包名来判断启动器是否在系统中启动,当启动器已启动,系统抛弃底层的按键事件;
根据系统中存在的所述启动器包名来判断启动器是否在系统中完成启动,当启动器启动完毕,系统恢复接收底层的按键事件。
作为进一步的技术改进,所述监控系统中应用程序的启动器包名具体采用如下步骤:
所述应用程序的启动器在系统中启动时触发框架层启动Activity方法,从该Activity方法中查询将要启动的应用程序的启动器包名。
所述判断启动器是否在系统中启动采用设置启动器包名的系统属性来标识启动器是否在系统中启动。
所述判断启动器是否在系统中完成启动采用设置启动器包名的系统属性来标识启动是否在系统中完成启动。
作为改进的方案,所述判断启动器是否在系统中完成启动还包括采用在确定启动器已启动后,同时开启一启动计时器,经过计时器预定时间后启动器尚未在系统中完成启动时,系统设置启动器完成启动。
所述计时器预定时间为5~10秒。
与现有技术相比较,本发明方法采取在Android系统启动器程序启动时,通过设置系统属性来识别启动器是否正在启动中,当启动器处于启动状态时抛弃所有底层传来的按键事件,按键事件不会传递给上层应用,以使应用程序在使用过程中对底层按键事件无法识别并不响应弹出对话框,当启动器启动完成后才修改系统属性以恢复底层按键事件的正常传递,同时,还可以给启动器启动过程设置计时器来计算启动过程所花费的时间,超过一定的时间也可修改系统属性以恢复底层按键事件的正常传递。有效解决了启动器启动过程中ANR事件的发生,改善了用户的使用体验。
附图说明
图1是本发明避免智能电视启动器出现ANR的方法优选实施例一的流程图。
图2是本发明避免智能电视启动器出现ANR的方法优选实施例二的流程图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,一种避免智能电视启动器出现ANR的方法优选实施例一的流程图,包括如下步骤:
S100,监控系统中应用程序的启动器包名。
对于采用Android系统的智能电视而言,Android系统应用程序的启动器在应用程序启动时,都会触发框架层启动Activity方法(ActivityStack.java中StartActivityLocked方法),通过监控该Activity方法,通过该Activity方法可以获取到将要启动的应用程序的启动器包名,包名是用来识别Android应用程序的。因此,可以通过对Activity方法中包含的启动器包名进行查询过滤后找出启动的应用程序。
S200,根据系统中存在的所述启动器包名判断启动器是否在系统中启动,当启动器已启动,系统抛弃底层的按键事件。
根据步骤S100中查询到启动的应用程序后,根据启动器包名来设置该应用程序在系统中的属性,以识别应用程序是否处于启动状态,具体可以通过对ActivityStack.java中StartActivityLocked方法的框架层接口SystemProperties.set来对启动器包名的系统属性进行设置,例如启动器包名为com.tcl.ui.qiyi时,将其属性值设置为1以标识启动器com.tcl.ui.qiyi正在启动中,查询过滤正在启动的应用程序及设置属性值的代码参考如下:
StartActivityLocked()
if("com.tcl.ui ".equals(aInfo.applicationInfo.packageName)) / {
//设置系统属性com.tcl.ui.qiyi为1
SystemProperties.set("com.tcl.ui.qiyi", "1")
}
然后,需要在Android框架层按键策略方法(PhoneWindowManager.java的interceptKeyBeforeDispatch方法)中来检测应用程序的属性,当应用程序的属性,即启动器包名的属性,为1时,表明启动器com.tcl.ui.qiyi正在启动中,这时,需要抛弃底层传来的按键事件,抛弃底层传来的按键事件是确保应用程序在启动过程中不受外部按键事件的影响,避免用户对应用程序启动过程的按键干扰,避免ANR对话框的出现。当启动器com.tcl.ui.qiyi返回给系统的属性值为1时,系统则返回-1值,表明抛弃按键事件,则不将按键事件传递给上层应用。
S300,根据系统中存在的所述启动器包名来判断启动器是否在系统中完成启动,当启动器启动完毕,系统恢复接收底层的按键事件。
当Android应用程序在启动完成后会触发框架层的通知系统应用程序启动完成(通过ActivityRecord.java中的windowsDraw方法通知),通知也是采用对启动器包名进行过滤来查找完成启动的启动器,如果启动器完成启动,则将启动器包名的系统属性回复,例如,通过框架层接口SystemProperties.set(“com.tcl.ui.qiyi”), “0”)来对启动器com.tcl.ui.qiyi进行系统属性值的设置,将其属性值设置为0,标识启动器com.tcl.ui.qiyi启动完成,之后,若有按键事件经过Android框架层按键策略方法时,由于系统属性值已经被设置为完成状态,因此,按键事件可以恢复正常传递给相应的应用程序,这样,对启动器在启动期间对底层按键事件抛弃,在启动器启动完成后恢复底层按键事件的正常传递,使得用户在启动器启动期间的按键事件无法正常传递给上层应用程序,系统也就无法在启动器启动期间接收响应按键事件出现ANR对话框,有效解决了启动器在启动期间ANR事件的发生。
作为改进方案,本发明还提供优选实施例二进一步完善优选实施例一的技术方案,保证系统能够及时恢复对按键事件的响应,避免用户误认为系统死机的情况发生。
图2所示为本发明优选实施例二的流程图,基于优选实施例一方案的基础,当判断启动器启动的同时,设置一个计时器,经过计时器预定时间后启动器尚未在系统中完成启动时,系统设置启动器完成启动,以保证系统能够及时恢复对按键事件的响应。具体步骤说明如下:
S101,监控系统中应用程序的启动器包名;该步骤具体实现过程与步骤S100相同,此处不赘述。
S201,根据系统中存在的所述启动器包名来判断启动器是否在系统中启动,当启动器已启动,同时开启计时器,系统抛弃底层的按键事件。
该步骤与步骤S200中判断启动器是否在系统中启动的过程相同,同时当启动器启动时需要开启一计时器进行计时,该计时器计时的预定时间为启动器在系统中加载的时间,一般为5~10秒,设置计时器计时是保证一定时间内启动器如果未启动完成时,系统也可以恢复接收底层的按键事件,使按键事件正常传递给应用程序,避免用户认为系统无响应进入死机状态而影响用户的体验。
在ActivityStack.java的StartActivityLocked方法中将系统属性设置为启动器正在启动的同时开启计时器:
//10秒钟后触发mUIDisplayed来设置系统属性com.tcl.ui.qiyi为0
mHandler.postDelayed(mUIDisplayed, 10*1000);
S301,根据系统中存在的所述启动器包名来判断启动器是否在系统中完成启动,当启动器启动完毕或计时器预定时间到时,系统恢复接收底层的按键事件。
判断启动器是否在系统中完成启动与步骤S300相同,此处不赘述。而无论启动器是否启动完毕,如果计时器预定时间到时,系统均需要恢复接收底层的按键事件,保证按键事件可以正常传递给上层应用程序。
对于计时器到时的触发,可在ActivityStack.java中定义一个Runnable参数来进行,代码说明如下:
//定义一个Runnable用来在计时器时间到达时触发
Runnable mUIDisplayed = new Runnable() {
public void run() {
//计时器时间到达时将启动器com.tcl.ui.qiyi系统属性设置为0
SystemProperties.set("com.tcl.ui.qiyi", "0");
}
当计时器到达预定时间时,通过对Runnable参数的识别来设置启动器com.tcl.ui.qiyi的系统属性,从而使系统在计时器到时而启动器未完成启动时也能够恢复接收底层的按键事件。
应当理解的是,以上所述仅为本发明的较佳实施例而已,并不足以限制本发明的技术方案,对本领域普通技术人员来说,在本发明的精神和原则之内,可以根据上述说明加以增减、替换、变换或改进,而所有这些增减、替换、变换或改进后的技术方案,都应属于本发明所附权利要求的保护范围。

Claims (6)

1.一种避免智能电视启动器出现ANR的方法,其特征在于,包括如下步骤:
监控系统中应用程序的启动器包名;
根据系统中存在的所述启动器包名来判断启动器是否在系统中启动,当启动器已启动,系统抛弃底层的按键事件;
根据系统中存在的所述启动器包名来判断启动器是否在系统中完成启动,当启动器启动完毕,系统恢复接收底层的按键事件。
2.根据权利要求1所述的避免智能电视启动器出现ANR的方法,其特征在于,所述监控系统中应用程序的启动器包名具体采用如下步骤:
所述应用程序的启动器在系统中启动时触发框架层启动Activity方法,从该Activity方法中查询将要启动的应用程序的启动器包名。
3.根据权利要求1所述的避免智能电视启动器出现ANR的方法,其特征在于, 所述判断启动器是否在系统中启动采用设置启动器包名的系统属性来标识启动器是否在系统中启动。
4.根据权利要求1所述的避免智能电视启动器出现ANR的方法,其特征在于,所述判断启动器是否在系统中完成启动采用设置启动器包名的系统属性来标识启动器是否在系统中完成启动。
5.根据权利要求4所述的避免智能电视启动器出现ANR的方法,其特征在于,所述判断启动器是否在系统中完成启动还包括采用在确定启动器已启动后,同时开启一启动计时器,经过计时器预定时间后启动器尚未在系统中完成启动时,系统设置启动器完成启动。
6.根据权利要求5所述的避免智能电视启动器出现ANR的方法,其特征在于,所述计时器预定时间为5~10秒。
CN201310685853.9A 2013-12-16 2013-12-16 一种避免智能电视启动器出现anr的方法 Active CN103702191B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310685853.9A CN103702191B (zh) 2013-12-16 2013-12-16 一种避免智能电视启动器出现anr的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310685853.9A CN103702191B (zh) 2013-12-16 2013-12-16 一种避免智能电视启动器出现anr的方法

Publications (2)

Publication Number Publication Date
CN103702191A CN103702191A (zh) 2014-04-02
CN103702191B true CN103702191B (zh) 2017-09-05

Family

ID=50363573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310685853.9A Active CN103702191B (zh) 2013-12-16 2013-12-16 一种避免智能电视启动器出现anr的方法

Country Status (1)

Country Link
CN (1) CN103702191B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155741B (zh) * 2016-06-30 2019-10-08 努比亚技术有限公司 一种避免应用程序无响应的处理装置及方法
CN105929981A (zh) * 2016-07-13 2016-09-07 深圳市鼎元科贸有限公司 一种基于非触摸Android智能手机虚拟鼠标
CN108733435B (zh) * 2017-04-17 2021-06-18 北京嘀嘀无限科技发展有限公司 避免应用触发anr的方法及装置
CN109861966B (zh) * 2018-12-06 2022-02-25 北京达佳互联信息技术有限公司 处理状态事件的方法、装置、终端及存储介质
CN109743692A (zh) * 2018-12-28 2019-05-10 深圳Tcl新技术有限公司 蓝牙热点信息的获取方法、系统及计算机可读存储介质
CN112202960B (zh) * 2020-09-27 2022-05-13 广东小天才科技有限公司 避免智能终端开机时出现无响应的方法及装置、智能终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567113A (zh) * 2010-12-13 2012-07-11 盛乐信息技术(上海)有限公司 前台程序的调配系统及实现方法
CN102981717A (zh) * 2012-11-12 2013-03-20 东莞宇龙通信科技有限公司 终端和触摸按键锁定方法
CN103440092A (zh) * 2013-08-13 2013-12-11 广东欧珀移动通信有限公司 一种返回按键的处理方法、系统及移动终端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1859616B1 (en) * 2005-03-08 2016-05-11 Koninklijke Philips N.V. Multiple user control of a down loadable application

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567113A (zh) * 2010-12-13 2012-07-11 盛乐信息技术(上海)有限公司 前台程序的调配系统及实现方法
CN102981717A (zh) * 2012-11-12 2013-03-20 东莞宇龙通信科技有限公司 终端和触摸按键锁定方法
CN103440092A (zh) * 2013-08-13 2013-12-11 广东欧珀移动通信有限公司 一种返回按键的处理方法、系统及移动终端

Also Published As

Publication number Publication date
CN103702191A (zh) 2014-04-02

Similar Documents

Publication Publication Date Title
CN103702191B (zh) 一种避免智能电视启动器出现anr的方法
Marrella et al. Intelligent process adaptation in the SmartPM system
CN106293919A (zh) 一种时间触发的嵌入式任务调度装置与方法
CN104331339A (zh) 一种移动终端死机检测处理方法、系统及移动终端
CN103215784A (zh) 一种洗衣机运行方法及洗衣机
CN102929709A (zh) 任务流异常的处理方法及装置
CN103634592A (zh) 智能电视自动化测试方法及系统
CN101452420A (zh) 一种嵌入式软件异常监控和处理装置及其方法
Zhang et al. Trace2tap: Synthesizing trigger-action programs from traces of behavior
CN105244025A (zh) 一种基于智能佩戴设备的语音识别方法及系统
CN102833120B (zh) 一种快速自动化测试中处理网管服务器异常的方法及系统
Khakpour et al. PobSAM: policy-based managing of actors in self-adaptive systems
CN106251605A (zh) 语音识别功能的启动方法、装置和系统及遥控器
CN108950989A (zh) 一种洗衣机运行控制方法、装置、存储介质及洗衣机
CN101916200A (zh) 终端升级的方法、终端升级回退的方法和升级管理中心
CN103677753A (zh) 多任务控制方法、设备以及工业控制系统
CN113268352B (zh) 面向通用服务机器人的多指令响应式任务协同管理方法
CN101295246A (zh) 一种从UML模型转换至SmartC模型的转换方法
CN109375996A (zh) 一种支持依赖关系管理的任务调度系统
CN112346842A (zh) 一种基于有向无环图的工作流任务调度方法
CN107329773A (zh) 一种电子设备重启后的处理方法、电子设备和存储装置
CN106101406A (zh) 一种基于移动终端的关机闹铃触发处理方法及移动终端
CN109753373A (zh) 基于复杂可编程逻辑器件的智能看门狗系统
CN108933306A (zh) 一种充电方法、装置及智能机器人
Dominici et al. Towards a system architecture for recognizing domestic activity by leveraging a naturalistic human activity model

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