android添加java.lang.management API
现在我的Android不支持库存在问题。 实际上它不支持这个API:“java.lang.management”。 Eclipse向我显示了这个错误:
10-25 17:53:03.460:java.lang.NoClassDefFoundError:java.lang.management.ManagementFactory。
我想知道如何添加这个API以供我的Android应用程序支持。
请帮忙。
该API不是Android的一部分,与Android不兼容。
java.lang.management
API用于管理和监视Java VM。 Android的Dalvik VM不是Java VM。
似乎在Android版本23中,情况略有改善。 例如,我发现了一个替代品:
GarbageCollectorMXBean gb = .... long gctime = gb.getCollectionTime();
感谢@Jacob,我现在正在使用此代码。 首先, getRuntimeStat()
方法并非在所有Android版本中都可用。 所以我先做一些反思:
static { try { Class> debugClass = Debug.class; getRuntimeStat = debugClass.getDeclaredMethod( "getRuntimeStat", String.class); } catch (NoSuchMethodException x) { getRuntimeStat = null; } }
然后,检索GC时间是调用方法句柄,具有正确的属性名称。 我目前正在使用此属性名称:
String gctimestr; try { gctimestr = (String) (getRuntimeStat != null ? getRuntimeStat.invoke(null, "art.gc.gc-time") : null); } catch (IllegalAccessException e) { gctimestr = null; } catch (InvocationTargetException e) { gctimestr = null; }
然后,如果gctimestr
非空,则可以将其转换为long值。 另一方面,如果它的null为统计数据不可用,则通过此API。