提升Android应用内存性能的方法技术

技术编号:35513410 阅读:19 留言:0更新日期:2022-11-09 14:29
本发明专利技术公开了一种提升Android应用内存性能的方法,包括:修改Android应用中界面和服务组件android:process属性的值,使得界面和服务运行在同一子进程;启动Android应用,系统创建主进程,主进程加载主界面,主界面跳转至子进程界面;进一步判断子界面设置的子进程是否存在,若不存在,创建名字为android:process属性值的子进程,加载子进程界面;保持主进程和子进程的通信,主界面注册主界面广播,子界面注册子界面广播,任务启动时,主界面发送开始命令,子界面接收主界面发送的开始命令,继而直接通知子进程中的服务去执行开始任务;当任务执行完毕,子进程中的服务通知给子界面,子界面发送结果命令,主界面收到来自子界面的结果命令,主界面向子界面发送停止命令。主界面向子界面发送停止命令。主界面向子界面发送停止命令。

【技术实现步骤摘要】
提升Android应用内存性能的方法


[0001]本专利技术属于Android应用
,具体涉及一种提升Android应用内存性能的方法。

技术介绍

[0002]目前常见的Android应用内存性能提升方法是在应用配置清单中申请大内存,最大内存可以申请到512M。同时在执行大量消耗内存的操作时使用异步操作,在子线程中处理,以保证主线程中的用户界面(UserInterface,UI)操作流畅。以上方式可以处理绝大部分情况,但是如果一旦子线程消耗的内存过多,会挤占UI的内存,导致UI卡顿,甚至无法响应。
[0003]同时,一旦因为内存不足或者其它原因导致的崩溃,整个应用都会崩溃无法使用。

技术实现思路

[0004]鉴于以上存在的问题,本专利技术实施例提供一种提升Android应用内存性能的方法,以突破原有内存容量的瓶颈,完成之前因内存不足而无法完成的任务。
[0005]为解决上述技术问题,本专利技术采用如下的技术方案:
[0006]一种提升Android应用内存性能的方法,包括:
[0007]修改Android应用中界面和服务组件android:process属性的值,使得界面和服务运行在同一子进程;
[0008]启动Android应用,系统创建主进程,主进程加载主界面,主界面跳转至子进程界面;进一步判断子界面设置的子进程是否存在,若不存在,创建名字为android:process属性值的子进程,加载子进程界面;若存在,直接加载子进程界面;
[0009]保持主进程和子进程的通信,主界面注册主界面广播,子界面注册子界面广播,任务启动时,主界面发送开始命令,子界面接收主界面发送的开始命令,继而直接通知子进程中的服务去执行开始任务;当任务执行完毕,子进程中的服务通知给子界面,子界面发送结果命令,主界面收到来自子界面的结果命令,主界面向子界面发送停止命令,子界面收到停止命令,通知子进程中的服务结束任务。
[0010]优选地,子进程申请独立内存。
[0011]优选地,子进程申请独立内存最大为512M。
[0012]采用本专利技术具有如下的有益效果:使用多进程的方式,可以将原本只有一个主进程的应用拆分成出一个子进程。使一个应用同时有一个主进程和一个子进程。而子进程申请的内存是独立的,并且可以申请到最大512M的内存。可以将耗内存资源较多的任务放在子进程中处理。主进程只处理UI操作和核心逻辑。并且保持子进程和主进程之间的通讯。当子进程完成任务之后可以及时反馈结果给主进程,并且及时关闭子进程,释放资源,这样既能突破单个App只能申请到512M内存的问题,而且保证了主进程的独立性。即使子进程出现崩溃等问题,也不会影响主进程的运行。
附图说明
[0013]图1为本专利技术实施例提升Android应用内存性能的方法的步骤流程图;
[0014]图2为本专利技术实施例提升Android应用内存性能的方法中子进程的启动流程。
具体实施方式
[0015]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0016]参见图1,所示为本专利技术实施例的一种提升Android应用内存性能的方法的步骤流程图,包括:
[0017]修改Android应用中组件android:process属性的值,使得界面和服务运行在同一子进程;
[0018]启动Android应用,系统创建主进程,主进程加载主界面,主界面跳转至子进程界面;进一步判断子界面设置的子进程是否存在,若不存在,创建子进程,加载子进程界面;若存在,直接加载子进程界面;
[0019]保持主进程和子进程的通信,主界面注册主界面广播,子界面注册子界面广播,任务启动时,主界面发送开始命令,子界面接收主界面发送的开始命令,继而直接通知子进程中的服务去执行开始任务;当任务执行完毕,子进程中的服务通知给子界面,子界面发送结果命令,主界面收到来自子界面的结果命令,主界面向子界面发送停止命令,子界面收到停止命令,通知子进程中的服务结束任务。
[0020]具体地,在Android系统中,默认情况下,一个应用就是一个进程。Android 系统为每一个应用提供了一套配置清单,用来注册该应用中用到的各种组件。组件通常包括界面(Activity),服务(Service),广播(Broadcast Receiver) 和内容提供器(Content Provider)。而本专利技术实施例中使用其中的界面(Activity) 和服务(Service)。界面(Activity)用来显示UI(User Interface),方便控制功能的启动,停止等。而服务(Service)则是用来具体执行消耗资源的任务。比如录制一段视频就是很消耗资源的任务。服务(Service)中不包含任何UI 相关的功能,完全依赖于界面(Activity)控制。本专利技术实施例中把服务(Service) 和控制服务的界面(Activity)一起放到同一个子进程中,保证服务和界面之间可以直接数据交互和通讯,而不需要与主进程交互。其中每一个组件中,都有一个android:process属性可以自行配置。该配置表示当前组件会运行在哪个进程中。默认情况下,该属性为空,表示运行在系统为应用默认创建的主进程中。本专利技术实施例中让界面或者服务运行在子进程,修改组件android:process属性的值,即起一个子进程的名字。
[0021]更进一步地,比如android:process=”:recorder”表示该配置项运行在一个名为recorder的私有进程中,该进程是主进程的子进程,其它的应用的组件不能和它运行在同一个进程。本专利技术实施例中采用以上方式设置,具有更高的安全性,可以不受其它应用干扰。当为某组件设置android:process之后,当主进程调用到该组件的时候,子进程就会被创建,组件就运行在该子进程中。
[0022]具体格式如下:
[0023][0024]其中android:process=":recorder"为子进程的名字。此处将两个组件,界面 (RecordActivity)和服务(RecordService)设置为具有同一个进程名,那么界面和服务启动之后就会运行在同一个名为“recorder”的子进程中。至此,完成子进程组件的配置清单工作。
[0025]本专利技术一实施例中,Android系统为应用默认启动一个进程,即主进程。没有设置android:process属性的所有组件都运行在主进程中。主进程是最先被启动的。通过系统提供的跳转接口startActivity来跳转到另一个界面(Activity)。当一个界面(Activity)要启动时,系统会首先检测界面(Activity)的进程属性,也就是设置的android:proces本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种提升Android应用内存性能的方法,其特征在于,包括:修改Android应用中界面和服务组件android:process属性的值,使得界面和服务运行在同一子进程;启动Android应用,系统创建主进程,主进程加载主界面,主界面跳转至子进程界面;进一步判断子界面设置的子进程是否存在,若不存在,创建名字为android:process属性值的子进程,加载子进程界面;若存在,直接加载子进程界面;保持主进程和子进程的通信,主界面注册主界面广播,子界面注册子界面广播,任务启动...

【专利技术属性】
技术研发人员:李成刘东方卢振雨佘永涛
申请(专利权)人:杭州当虹科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1