世界杯进球最多

背景

项目中图片拍照功能是调用系统相机,由于某些手机内存不足,经常调用系统相机后,项目app进程被系统杀掉了,所以采取的措施是:调用系统相机前先判断手机可用内存大小,当可用内存低于500M时,提示用户先清理手机内存。

一 获取手机内存大小方法

/**

* Get memory info of device.

*/

@TargetApi(Build.VERSION_CODES.CUPCAKE)

public static ActivityManager.MemoryInfo getMemoryInfo(Context context) {

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();

am.getMemoryInfo(mi);

return mi;

}

/**

* 内存是否够用

* @param activity

* @return

*/

private boolean memoryIsAvailble(FragmentActivity activity) {

if (activity == null) return true;

ActivityManager.MemoryInfo memoryInfo = MemoryUtil.getMemoryInfo(activity);

if (memoryInfo != null){

double availMem = memoryInfo.availMem * 1.0/ (1024 * 1024);

if (availMem > 0 && availMem <= 500){ // 小于500M

return false;

}

}

return true;

}

//手机总内存大小

double utilTotalMem = MemoryUtil.getMemoryInfo(this).totalMem * 1.0/ (1024 * 1024);

//手机可用内存大小

double utilAvailMem = MemoryUtil.getMemoryInfo(this).availMem * 1.0/ (1024 * 1024);

//临界值,达到这个值,进程就要被杀死,但是我实际测试发现,也并不是根据这个临界值来杀死app的,没啥用

double utilThresholdMem = MemoryUtil.getMemoryInfo(this).threshold * 1.0/ (1024 * 1024);

Log.e("TAGTAGTAG ", "M MemoryUtil.totalMem: "+ utilTotalMem);

Log.e("TAGTAGTAG ", "M MemoryUtil.availMem: "+ utilAvailMem);

Log.e("TAGTAGTAG ", "M MemoryUtil.utilThresholdMem: "+ utilThresholdMem);

(1) 华为HUAWEI nova 7,总内存8G,totalMem=7503M, availMem=2774M (2) 红米8 Pro,总内存6G,totalMem=5616M,availMem=2212M (3) 小米4,总内存2G,totalMem=1850M,availMem=522M

经测试: 1 手机可用内存(availMem)一般是总内存(totalMem)的三分之一; 2 该方法获取的总内存大小(totalMem)接近手机总内存,误差很小。

二 获取app内存大小方法

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);

//最大分配内存

int memory = activityManager.getMemoryClass();

System.out.println("memory: "+memory);

//最大分配内存获取方法2

float maxMemory = (float) (Runtime.getRuntime().maxMemory() * 1.0/ (1024 * 1024));

//当前分配的总内存

float totalMemory = (float) (Runtime.getRuntime().totalMemory() * 1.0/ (1024 * 1024));

//剩余内存

float freeMemory = (float) (Runtime.getRuntime().freeMemory() * 1.0/ (1024 * 1024));

Log.e("TAGTAGTAG ", "maxMemory: "+maxMemory);

Log.e("TAGTAGTAG ", "totalMemory: "+totalMemory);

Log.e("TAGTAGTAG ", "freeMemory: "+freeMemory);

经测试: app占用的总内存(totalMemory)在随着app开启的页面越多,逐渐变大,而不是一开始就分配给应用的最大内存。

三 通过命令行获取内存信息

1 在命令行窗口里输入"adb shell",进入shell环境 2 输入"cat /proc/meminfo" 点回车,即可在命令行里显示meminfo文件的内容 例如:

C:\Users\张志峰>adb shell

begonia:/ $ cat /proc/meminfo

MemTotal: 5751004 kB

MemFree: 181588 kB

MemAvailable: 2308672 kB

Buffers: 83412 kB

Cached: 2108464 kB

SwapCached: 96364 kB

Active: 3123004 kB

Inactive: 1155128 kB

Active(anon): 1531752 kB

Inactive(anon): 561900 kB

Active(file): 1591252 kB

Inactive(file): 593228 kB

Unevictable: 3204 kB

Mlocked: 3204 kB

SwapTotal: 3162168 kB

SwapFree: 2464700 kB

Dirty: 76 kB

Writeback: 0 kB

AnonPages: 2077860 kB

Mapped: 905676 kB

Shmem: 4904 kB

Slab: 285728 kB

SReclaimable: 103352 kB

SUnreclaim: 182376 kB

KernelStack: 78208 kB

PageTables: 91780 kB

NFS_Unstable: 0 kB

Bounce: 0 kB

WritebackTmp: 0 kB

CommitLimit: 6037668 kB

Committed_AS: 108909280 kB

VmallocTotal: 263061440 kB

VmallocUsed: 0 kB

VmallocChunk: 0 kB

CmaTotal: 540672 kB

CmaFree: 67704 kB

begonia:/ $

在命令行窗口里输入"adb shell ps"可以获取运行应用列表

C:\Users\张志峰>adb shell ps

USER PID PPID VSZ RSS WCHAN ADDR S NAME

root 1 0 50728 2528 0 0 S

system 1422 475 6555532 171964 0 0 S com.android.systemui

webview_zygote 1448 476 1737288 16712 0 0 S webview_zygote

root 1455 474 10288 2656 0 0 S iptables-restore

root 1467 474 10304 2832 0 0 S ip6tables-restore

radio 1574 475 4388376 69508 0 0 S com.android.phone

u0_a16 1580 475 12313548 195328 0 0 S com.miui.home

root 1884 2 0 0 0 0 I [kbase_event]

radio 1897 475 4287908 37472 0 0 S com.mediatek.ims

root 1959 2 0 0 0 0 I [kbase_event]

system 2119 1 11188 2520 0 0 S charge_logger

system 2121 1 30884 3288 0 0 S mcd

system 2122 1 128964 3264 0 0 S batterywarning

system 2124 1 25752 3212 0 0 S ged_srv

system 2168 475 4244748 32800 0 0 S com.mediatek.voicecommand.vis

system 2183 475 4246228 29732 0 0 S com.goodix.fingerprint

system 2198 475 5502288 28924 0 0 S com.miui.contentcatcher

system 2222 475 4300200 74592 0 0 S com.miui.daemon

nfc 2237 475 4304260 74308 0 0 S com.android.nfc

secure_element 2252 475 4246116 29884 0 0 S com.android.se

u0_a40 2267 475 4714420 127672 0 0 S com.miui.voicetrigger

u0_a17 2282 475 4265540 28520 0 0 S com.xiaomi.mircs

u0_a94 2296 475 4335948 80104 0 0 S com.xiaomi.xmsf

finddevice 2313 475 4312188 59196 0 0 S com.xiaomi.finddevice

system 2330 475 4338224 54484 0 0 S com.mediatek.voicecommand

system 2350 475 4292172 37956 0 0 S com.miui.face

u0_a100 2418 475 4315864 59136 0 0 S com.xiaomi.metoknlp

system 2441 475 4266164 54868 0 0 S com.xiaomi.location.fused

system 2491 475 4427572 81572 0 0 S com.miui.securitycenter.remote

system 3055 27334 16980 4400 0 0 S dumpsys

root 3156 2 0 0 0 0 I [kbase_event]

system 3235 27334 16980 4324 0 0 S dumpsys

system 3327 475 4263940 59364 0 0 S com.xiaomi.joyose

root 4653 2 0 0 0 0 I [kbase_event]

u0_a180 5134 476 2080004 181272 0 0 S com.tencent.mobileqq

u0_a166 5861 475 4265756 37872 0 0 S com.miui.mishare.connectivity

root 6307 2 0 0 0 0 I [kbase_event]

root 6606 2 0 0 0 0 I [kbase_event]

system 7091 27334 16980 4356 0 0 S dumpsys

u0_a71 7105 475 4335412 99784 0 0 S com.miui.hybrid:entrance

u0_a64 7122 475 4275064 126316 0 0 S com.miui.analytics

system 7294 475 4283532 124984 0 0 S com.android.settings:remote

u0_a103 7347 475 4319604 113132 0 0 S com.miui.systemAdSolution

u0_a71 7519 475 4368732 135768 0 0 S com.miui.hybrid

u0_a55 7574 475 4243636 70636 0 0 S com.android.smspush

u0_a46 7590 475 4246592 90200 0 0 S android.ext.services

root 7857 2 0 0 0 0 S [main_thread]

root 7858 2 0 0 0 0 S [hif_thread]

root 7859 2 0 0 0 0 S [rx_thread]

wifi 7860 1 2130656 11196 0 0 S wpa_supplicant

system 8579 27334 16980 4212 0 0 S dumpsys

u0_a47 9202 475 4265584 86084 0 0 S com.lbe.security.miui

system 9379 27334 16980 4068 0 0 S dumpsys

u0_a137 9713 475 4897420 162256 0 0 S com.xiaomi.smarthome

system 9728 475 4266584 36540 0 0 S com.miui.wmsvc

bluetooth 9896 475 4247312 85924 0 0 S com.xiaomi.bluetooth

u0_a137 10298 9713 83512 14992 0 0 S libweexjsb.so

system 10468 475 4261556 34592 0 0 S com.miui.aod

u0_a28 11034 475 4444600 156996 0 0 S com.google.android.packageinstaller

root 11068 2 0 0 0 0 I [kbase_event]

root 11219 2 0 0 0 0 I [fs_suspend_syss]

u0_a180 12210 476 1924300 146116 0 0 S com.tencent.mobileqq:MSF

u0_a78 12548 475 4249844 78968 0 0 S com.unionpay.tsmservice.mi

system 12683 475 4258280 88156 0 0 S com.xiaomi.mi_connect_service

mdnsr 12700 1 5672 1208 0 0 S mdnsd

system 12712 476 1558848 97200 0 0 S com.xiaomi.misettings

u0_a180 14895 476 2239724 126456 0 0 S com.tencent.mobileqq:tool

u0_a180 14964 476 1949940 76008 0 0 S com.tencent.mobileqq:qzone

system 16501 27334 16980 4324 0 0 S dumpsys

theme 16576 475 4993880 93896 0 0 S com.android.thememanager

u0_i49 16652 1448 1548960 27824 0 0 S com.google.android.webview:sandboxed_process0

system 16983 27334 16980 4028 0 0 S dumpsys

root 18447 2 0 0 0 0 I [kworker/u16:2]

system 18530 475 4846756 275692 0 0 S com.android.settings

u0_a153 18778 475 4277428 129924 0 0 S com.miui.weather2

system 18806 27334 16980 3780 0 0 S dumpsys

root 18833 2 0 0 0 0 I [kbase_event]

u0_a61 18847 475 4265696 107184 0 0 S com.xiaomi.account:accountservice

system 18937 27334 16980 4268 0 0 S dumpsys

root 19080 2 0 0 0 0 I [kworker/6:2]

root 19460 2 0 0 0 0 I [kworker/7:2]

u0_a754 20002 475 5131724 317664 0 0 S cn.maitian.app

u0_a754 20038 475 4576740 124156 0 0 S cn.maitian.app:core

root 20112 2 0 0 0 0 I [kbase_event]

u0_a754 20191 475 4582636 135400 0 0 S cn.maitian.app:remote

u0_a171 20881 475 4624224 189620 0 0 S com.netease.nim.demo

system 20901 27334 16980 4328 0 0 S dumpsys

u0_a171 20924 475 4282432 108432 0 0 S com.netease.nim.demo:core

root 20966 2 0 0 0 0 I [kbase_event]

root 20984 2 0 0 0 0 I [kworker/5:2]

u0_a106 21030 475 4248496 91700 0 0 S com.miui.securityinputmethod

root 21074 2 0 0 0 0 I [kworker/u16:5]

u0_a87 21075 475 4323644 140736 0 0 S com.baidu.input_mi

root 21127 2 0 0 0 0 I [kworker/u16:8]

u0_a158 21164 476 2109608 295100 0 0 S com.homelink.android

u0_a158 21182 476 1849204 108956 0 0 S com.homelink.android:coreservice

u0_a158 21399 476 1858580 119956 0 0 S com.homelink.android:remote

root 21429 2 0 0 0 0 I [kbase_event]

root 21495 2 0 0 0 0 I [kworker/6:1]

system 21665 475 4252560 97976 0 0 S com.miui.contentcatcher:autofill

root 21706 2 0 0 0 0 I [kworker/3:1]

u0_a18 21708 475 4427224 124500 0 0 S com.android.camera

u0_i127 21765 1448 1667252 137368 0 0 S com.google.android.webview:sandboxed_process1

shell 21980 21925 11908 4180 0 0 R ps

system 24311 27334 16980 4356 0 0 S dumpsys

u0_a230 25426 475 5187384 124748 0 0 S com.tencent.mm

root 25559 2 0 0 0 0 I [kbase_event]

u0_a230 25677 475 4923124 64220 0 0 S com.tencent.mm:push

system 27334 475 4346676 100620 0 0 S com.miui.powerkeeper

system 27754 27334 16980 4320 0 0 S dumpsys

system 28316 475 4261484 102464 0 0 S com.miui.notification:remote

u0_a15 28318 475 4415604 92064 0 0 S android.process.media

system 29767 27334 16980 4156 0 0 S dumpsys

root 29901 2 0 0 0 0 I [kbase_event]

system 31110 27334 16980 4124 0 0 S dumpsys

system 31486 27334 16980 4352 0 0 S dumpsys

system 32622 27334 16980 4096 0 0 S dumpsys