CN105677498B - 一种安卓系统上View控件状态保存的优化方法 - Google Patents

一种安卓系统上View控件状态保存的优化方法 Download PDF

Info

Publication number
CN105677498B
CN105677498B CN201511008079.3A CN201511008079A CN105677498B CN 105677498 B CN105677498 B CN 105677498B CN 201511008079 A CN201511008079 A CN 201511008079A CN 105677498 B CN105677498 B CN 105677498B
Authority
CN
China
Prior art keywords
view
view controls
values
controls
state
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
CN201511008079.3A
Other languages
English (en)
Other versions
CN105677498A (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.)
Shandong University
Original Assignee
Shandong University
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 Shandong University filed Critical Shandong University
Priority to CN201511008079.3A priority Critical patent/CN105677498B/zh
Publication of CN105677498A publication Critical patent/CN105677498A/zh
Application granted granted Critical
Publication of CN105677498B publication Critical patent/CN105677498B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及一种安卓系统上View控件状态保存的优化方法,本发明通过动态改变View控件的ID值来防止在“非应用行为”退出时View状态未保存或者状态保存错误的发生,适用于android各类智能终端设备。通过改变特殊情况下的View的ID值,解决了用户在“非应用行为”退出Activity时未保存必要的View状态的问题,使得应用在重建Activity时恢复到意外退出时的状态,改善了用户体验。

Description

一种安卓系统上View控件状态保存的优化方法
技术领域
本发明涉及一种安卓系统上View控件状态保存的优化方法,属于安卓系统优化技术领域。
背景技术
随着移动平台的快速发展,越来越多的开发人员开始转向移动互联网应用开发,移动互联网应用急剧增加。同时,随着移动互联网的迅速发展,用户的上网方式开始向移动方向转移。手机不再只是一个简单的通讯工具,用户可以使用手机实现办公、娱乐、社交等功能。移动开发人员的逐渐增多和用户需求的不断变化,这些因素都加剧了移动操作系统的竞争。目前,智能移动操作系统有:Android、IOS和Windows Phone。虽然Android系统在智能终端市场上占有比较大的份额,但是Android系统上仍有一些不足,值得开发人员继续对其进行优化。例如,当系统在未经“允许”的突发情况下结束掉Activity,在进入这种状态之前,肯定需要保存一下必要的View状态(显示的数据和是否处于焦点等,下面View的状态均按上述的解释处理),然而,android系统只会对特定情况下的View状态进行保存,本文就是针对android系统中对onSaveInstanceState处理View状态保存时存在的上述问题进行优化,以提升系统性能,改善用户体验。
在Android系统中,每当有“非应用行为”退出Activity(相对于“应用行为”退出Activity而言,“应用行为”退出Activity是指主动调用finish()方法,或者主动按Back键,让Activity结束)时,系统会调用Activity的onSaveInstanceState方法。在这个方法中android系统会首先创建一个Bundle对象,用于存放View的状态。在创建好Bundle对象之后,系统会找到对应Activity的View树的根视图,即DecorView。DecorView会调用自己的saveHierarchyState方法,遍历的保存View树下各个View的状态。由于android系统是以ID值作为Key-Value的Key来保存View的状态,所以在编写应用界面的时候设置过ID值(在xml布局文件中指定过android:id的属性或者在view的setId方法中设置过ID值)的View才可以进行状态保存。也就是,即使Activity中的处于焦点的View控件,如果没有为此View设置过ID值,它的状态就无法保存,也就无法在Activity重建时恢复焦点View控件的状态。此外,如果在同一个Activity中有相同ID的同种类型的View控件,处于View树视图较远的地方的View会在状态保存的时候覆盖掉前面相同ID的View控件的状态。
发明内容
针对现有技术的不足,本发明提供了一种安卓系统上View控件状态保存的优化方法;
本发明通过动态改变View控件的ID值来防止在“非应用行为”退出时View状态未保存或者状态保存错误的发生,适用于android各类智能终端设备。通过改变特殊情况下的View的ID值,解决了用户在“非应用行为”退出Activity时未保存必要的View状态的问题,使得应用在重建Activity时恢复到意外退出时的状态,改善了用户体验。
本发明的技术方案为:
一种安卓系统上View控件状态保存的优化方法,具体步骤包括:
(1)创建一个Bundle对象;
(2)获取到View视图的根视图DecorView;
(3)创建一个SparseArray,SparseArray包括一个key数组和一个value数组,类似于Map容器,key数组用来放置View控件的ID值,value数组用来放置View控件的状态,所述状态是指,例如,View控件显示的数据或者View控件是否处于pressed状态、selected状态或focused状态。
(4)调用dispatchSaveInstanceState()方法对View视图下所有的View控件进行遍历,并将View控件的ID值及其状态保存到所述SparseArray中:判断View控件是否存在ID值:①如果View控件不存在ID值,则检测该View控件是否处于pressed、selected、focused中的一个或其中几个状态,其中,pressed是指按下View控件后未松开的动作,selected是指选中动作,focused是指获得焦点的动作;如果是,为该View控件设置一个ID值并保存该View控件的状态,否则,对该View控件不作任何处理;②如果View控件存在ID值,则从SparseArray中查找所有View控件的ID值是否与该View控件的ID值相同,如果相同,则改变该View控件的ID值,并将改变后的该View控件的ID值及该View控件的状态保存SparseArray中,否则,直接将该View控件的ID值及该View控件的状态保存SparseArray中;
(5)将步骤(4)得到的SparseArray保存在步骤(1)所述的Bundle对象中。
本发明的有益效果为:
本发明通过动态改变View控件的ID值来防止在“非应用行为”退出时View状态未保存或者状态保存错误的发生,适用于android各类智能终端设备。通过改变特殊情况下的View的ID值,解决了用户在“非应用行为”退出Activity时未保存必要的View状态的问题,使得应用在重建Activity时恢复到意外退出时的状态,改善了用户体验。
附图说明
图1为现有的所述安卓系统上View控件状态保存的优化方法流程图;
图2为本发明所述安卓系统上View控件状态保存的优化方法流程图。
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例
一种安卓系统上View控件状态保存的优化方法,具体步骤包括:
(1)创建一个Bundle对象;
(2)获取到View视图的根视图DecorView;
(3)创建一个SparseArray,SparseArray包括一个key数组和一个value数组,类似于Map容器,key数组用来放置View控件的ID值,value数组用来放置View控件的状态,所述状态是指,例如,View控件显示的数据或者View控件是否处于pressed状态、selected状态或focused状态。
(4)调用dispatchSaveInstanceState()方法对View视图下所有的View控件进行遍历,并将View控件的ID值及其状态保存到所述SparseArray中:判断View控件是否存在ID值:①如果View控件不存在ID值,则检测该View控件是否处于pressed、selected、focused中的一个或其中几个状态,其中,pressed是指按下View控件后未松开的动作,selected是指选中动作,focused是指获得焦点的动作;如果是,为该View控件设置一个ID值并保存该View控件的状态,否则,对该View控件不作任何处理;②如果View控件存在ID值,则从SparseArray中查找所有View控件的ID值是否与该View控件的ID值相同,如果相同,则改变该View控件的ID值,并将改变后的该View控件的ID值及该View控件的状态保存SparseArray中,否则,直接将该View控件的ID值及该View控件的状态保存SparseArray中;
(5)将步骤(4)得到的SparseArray保存在步骤(1)所述的Bundle对象中。
如图2所示。

Claims (1)

1.一种安卓系统上View控件状态保存的优化方法,其特征在于,具体步骤包括:
(1)创建一个Bundle对象;
(2)获取到View视图的根视图DecorView;
(3)创建一个SparseArray,SparseArray包括一个key数组和一个value数组,key数组用来放置View控件的ID值,value数组用来放置View控件的状态;
(4)调用dispatchSaveInstanceState()方法对View视图下所有的View控件进行遍历,并将View控件的ID值及其状态保存到所述SparseArray中:判断View控件是否存在ID值:①如果View控件不存在ID值,则检测该View控件是否处于pressed、selected、focused中的一个或其中几个状态,其中,pressed是指按下View控件后未松开的动作,selected是指选中动作,focused是指获得焦点的动作;如果是,为该View控件设置一个ID值并保存该View控件的状态,否则,对该View控件不作任何处理;②如果View控件存在ID值,则从SparseArray中查找所有View控件的ID值是否与该View控件的ID值相同,如果相同,则改变该View控件的ID值,并将改变后的该View控件的ID值及该View控件的状态保存SparseArray中,否则,直接将该View控件的ID值及该View控件的状态保存在SparseArray中;
(5)将步骤(4)得到的SparseArray保存在步骤(1)所述的Bundle对象中。
CN201511008079.3A 2015-12-29 2015-12-29 一种安卓系统上View控件状态保存的优化方法 Active CN105677498B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511008079.3A CN105677498B (zh) 2015-12-29 2015-12-29 一种安卓系统上View控件状态保存的优化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511008079.3A CN105677498B (zh) 2015-12-29 2015-12-29 一种安卓系统上View控件状态保存的优化方法

Publications (2)

Publication Number Publication Date
CN105677498A CN105677498A (zh) 2016-06-15
CN105677498B true CN105677498B (zh) 2018-05-25

Family

ID=56297800

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511008079.3A Active CN105677498B (zh) 2015-12-29 2015-12-29 一种安卓系统上View控件状态保存的优化方法

Country Status (1)

Country Link
CN (1) CN105677498B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102110130A (zh) * 2010-09-17 2011-06-29 苏州阔地网络科技有限公司 一种网页上实现麦克风检测的方法
CN102937859A (zh) * 2012-10-19 2013-02-20 山东大学 一种基于Android操作系统的桌面系统的实现方法
CN103019942A (zh) * 2012-12-31 2013-04-03 广东欧珀移动通信有限公司 一种基于安卓系统的待测应用自动测试方法和系统
CN103577699A (zh) * 2013-11-14 2014-02-12 哈尔滨工程大学 一种基于Android平台的DICIOM医学图像显示处理方法
CN104423870A (zh) * 2013-09-10 2015-03-18 北京三星通信技术研究有限公司 图形用户界面中的控件、显示方法及操作控件的方法和装置
CN105022634A (zh) * 2015-07-22 2015-11-04 上海斐讯数据通信技术有限公司 一种锁屏属性传递方法及移动终端

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102110130A (zh) * 2010-09-17 2011-06-29 苏州阔地网络科技有限公司 一种网页上实现麦克风检测的方法
CN102937859A (zh) * 2012-10-19 2013-02-20 山东大学 一种基于Android操作系统的桌面系统的实现方法
CN103019942A (zh) * 2012-12-31 2013-04-03 广东欧珀移动通信有限公司 一种基于安卓系统的待测应用自动测试方法和系统
CN104423870A (zh) * 2013-09-10 2015-03-18 北京三星通信技术研究有限公司 图形用户界面中的控件、显示方法及操作控件的方法和装置
CN103577699A (zh) * 2013-11-14 2014-02-12 哈尔滨工程大学 一种基于Android平台的DICIOM医学图像显示处理方法
CN105022634A (zh) * 2015-07-22 2015-11-04 上海斐讯数据通信技术有限公司 一种锁屏属性传递方法及移动终端

Also Published As

Publication number Publication date
CN105677498A (zh) 2016-06-15

Similar Documents

Publication Publication Date Title
JP2019518257A (ja) 状態制御方法及び装置
CN109088995A (zh) 支持全球语言翻译的方法及手机
CN107622709A (zh) 知识点掌握程度评价方法、介质和电子设备
CN106033393A (zh) 一种应用程序测试方法及系统以及移动终端
US10949991B2 (en) Method and apparatus for determining position of pupil
JP2019502980A5 (zh)
CN104376056B (zh) 一种数据处理的方法和装置
CN104424240A (zh) 多表关联方法、主服务节点、计算节点及系统
CN104063303A (zh) 一种获取和释放root权限的方法
CN105677498B (zh) 一种安卓系统上View控件状态保存的优化方法
CN106055271A (zh) 一种基于云计算的重复数据去重选择方法及装置
CN105159664A (zh) 基于javascript实现键值对存储的方式
WO2015088557A1 (en) Data stream processing based on a boundary parameter
CN104618471B (zh) 面向不同终端的应用程序状态转移方法
CN109992652A (zh) 一种信息回复方法、装置、设备及存储介质
CN104021085A (zh) 一种移动终端内存清理方法和装置
RU2015115523A (ru) Системы и способы для вычисления решений уравнений геометрических связей реализуемых компьютером виртуальных моделей
US20190129737A1 (en) Virtual private cloud services with physical machine servers and virtual machines
CN107547468A (zh) 网络协议切换装置、方法及终端
CN104462322A (zh) 字符串比对方法和装置
US10693731B2 (en) Flow entry management method and device
CN107659652A (zh) 一种云备份的方法及装置
CN103778220A (zh) 一种基于云计算的决策支持方法和装置
CN106911634A (zh) 一种登录方法和设备
CN105706397A (zh) 一种基于微信的共享信息分享方法及系统

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