文档管理中心
|

HarmonyOS

HarmonyOS获取系统内存大小、可用内存

问题背景

有网友提到:如何在HarmonyOS获取系统内存大小、可用内存?本文通过一个例子来演示解决方案。

解决方案

HarmonyOS获取手机系统内存大小的方法和Android类似。需要用到SystemMemoryInfo和iAbilityManager两个类,代码如下:

SystemMemoryInfo systemMemoryInfo = new SystemMemoryInfo();

IAbilityManager iAbilityManager = getAbilityManager();

iAbilityManager.getSystemMemoryInfo(systemMemoryInfo);

systemMemoryInfo.getTotalSysMem(); // 系统内存大小

systemMemoryInfo.getAvailSysMem(); // 可用内存大小

完整示例

创建一个名为SystemMemoryInfo的Java语言项目。修改MainAbilitySlice

代码如下:


package com.waylau.hmos.systemmemoryinfo.slice;

import com.waylau.hmos.systemmemoryinfo.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.ability.SystemMemoryInfo;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Text;
import ohos.app.IAbilityManager;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;

public class MainAbilitySlice extends AbilitySlice {
private static final String TAG = MainAbilitySlice.class.getSimpleName();
private static final HiLogLabel LABEL_LOG =
new HiLogLabel(HiLog.LOG_APP, 0x00001, TAG);

@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);

// 添加点击事件来触发请求
Text text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
text.setClickedListener(listener -> this.printSystemMemoryInfo());
}

// 打印内存信息
private void printSystemMemoryInfo() {
HiLog.info(LABEL_LOG, "Before printSystemMemoryInfo");
SystemMemoryInfo systemMemoryInfo = new SystemMemoryInfo();
IAbilityManager iAbilityManager = getAbilityManager();
iAbilityManager.getSystemMemoryInfo(systemMemoryInfo);
HiLog.info(LABEL_LOG, "TotalSysMem: %{public}s B", systemMemoryInfo.getTotalSysMem() );
HiLog.info(LABEL_LOG, "AvailSysMem: %{public}s B", systemMemoryInfo.getAvailSysMem() );
HiLog.info(LABEL_LOG, "After printSystemMemoryInfo");
}

@Override
public void onActive() {
super.onActive();
}

@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}

上述代码

  • 对默认生成的Id_text_helloworld文本设置点击事件,点击则会执行printSystemMemoryInfo方法。
  • printSystemMemoryInfo方法使用SystemMemoryInfo、来获取 IAbilityManager系统内存大小、可用内存。

运行

运行应用,界面显示如下。点击“Hello World”本文,触发点击事件。

此时,界面切换到了搜索界面,如下。

cke_149.png

日志输出如下:

10-19 17:26:31.555 9566-9566/com.waylau.hmos.systemmemoryinfo I 00001/MainAbilitySlice: Before printSystemMemoryInfo

10-19 17:26:31.556 9566-9566/com.waylau.hmos.systemmemoryinfo I 00001/MainAbilitySlice: TotalSysMem: 8363315200 B

10-19 17:26:31.556 9566-9566/com.waylau.hmos.systemmemoryinfo I 00001/MainAbilitySlice: AvailSysMem: 6595653632 B

10-19 17:26:31.556 9566-9566/com.waylau.hmos.systemmemoryinfo I 00001/MainAbilitySlice: After printSystemMemoryInfo

源码

上述示例源码,可以在https://github.com/waylau/harmonyos-tutorial仓库找到。

点赞
收藏
2
回复
4
分享
举报
浏览2136 编辑于2021-10-19 09:41未知归属地
全部评论
最多点赞
最新发布
最早发布
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。