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应用程序android添加java.lang.management API,java,android,eclipse,Java,Android,Eclipse,现在我对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.man
请提供任何帮助。该API不是Android的一部分,并且与Android不兼容
java.lang.management
API用于管理和监视java虚拟机。安卓的Dalvik虚拟机不是Java虚拟机。安卓版本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;
}
}
如果非空,则可以将
gctimestr
转换为长值。另一方面,如果它为空,则无法通过此API获得统计信息。好的,但我们不能这样做:?当然可以尝试重新打包,但我认为您不会在大多数管理软件包中获得太多成功。管理API期待一个完全不同的VM,因此无法保证任何功能。
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;
}