关于内存不足的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ch_xin/article/details/8363844

现象:
通过电话本或通话记录选择联系人号码发送信息,就会出现内存不足的提示界面。

这种操作本来是很一般用户操作,此时出现内存不足的情况,对于用户来说是难以理解和接受的。
现在有没有临时解决的方法?比如在APP中配置大一点的内存,但这样会不会引起别的问题?

1、在发短信的时候砍掉phone book.
关闭掉contact,可以CALL 如下这个函数关闭contact。请注意call这个函数的地方是call了UC发短信后(call vappUcAppLauncher接口后)。(这个函数可以放在vapp_phb_app.cpp这个file中,然后导出给其它地方用)

extern "C"
{

MMI_BOOL vapp_phb_close_contact()
{
MMI_BOOL ret = MMI_FALSE;
VfxApp *app = VfxAppLauncher::findApp(
VAPP_CONTACT,
VFX_OBJ_CLASS_INFO(VappPhbApp),
VFX_APP_LAUNACHER_FIND_APP_NORMAL_FLAG | VFX_APP_LAUNACHER_FIND_APP_BG_FLAG);
if (app)
{
VfxAppLauncher::terminate(app->getGroupId());
ret = MMI_TRUE;
}
return ret;
}

}


 

2、让系统自动去砍(采用这种方案后,不会有内存不足的提示,当memory不够时,系统自动去砍掉后台的AP,顺序是按占用memory大小)
自动关闭其他app的方法是:
in AppMemMgrCore.c
1) 将 do_prepare_free_volunteers()中的下面3行代码注释掉:
// if (g_asm_core_ctx.req_info.force_to_prepare)
CHANGE_STATE(ASM_CORE_STATE_FREE_IN_USED, &new_data);
// else
// CHANGE_STATE(ASM_CORE_STATE_FREE_SELECTED, &new_data);
2) 将asm_core_v10_release_mem() 中的 MEM_AP_STOP_TYPE_REQ 改为MEM_AP_STOP_TYPE_FORCE
即:
applib_mem_ap_stop_app_by_MMI_task(g_asm_core_ctx.app_list[next_idx], MEM_AP_STOP_TYPE_REQ);
改为:
applib_mem_ap_stop_app_by_MMI_task(g_asm_core_ctx.app_list[next_idx], MEM_AP_STOP_TYPE_FORCE);

然后 make new,验证一下。

猜你喜欢

转载自blog.csdn.net/ch_xin/article/details/8363844