HarmonyOS鸿蒙Next中获取系统内存大小及可用内存的方法

HarmonyOS鸿蒙Next中获取系统内存大小及可用内存的方法

问题背景

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

解决方案

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

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仓库找到。


更多关于HarmonyOS鸿蒙Next中获取系统内存大小及可用内存的方法的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

原来是这样,多谢告知

更多关于HarmonyOS鸿蒙Next中获取系统内存大小及可用内存的方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


哈哈~多谢支持!!!!!期待后续更新~,

楼主时刻紧跟热点问题啊

多谢支持~

反正大家有啥疑问,咱们就帮解决什么问题。

关注我,不迷路

在HarmonyOS鸿蒙Next中,可以通过SystemMemoryInfo类获取系统内存大小及可用内存。首先,使用getSystemMemoryInfo()方法获取SystemMemoryInfo实例,然后通过getTotalSize()方法获取总内存大小,getAvailableSize()方法获取可用内存大小。示例代码如下:

SystemMemoryInfo memoryInfo = SystemMemoryInfo.getSystemMemoryInfo();
long totalMemory = memoryInfo.getTotalSize(); // 总内存大小
long availableMemory = memoryInfo.getAvailableSize(); // 可用内存大小

这些方法返回的内存大小单位为字节。

回到顶部