此问题仅涉及代号One。
短故事:我正在调试一个奇怪的错误,该错误仅在实际设备中发生,而在模拟器中不发生。有一种在特定情况下每秒调用一次的方法,因此我怀疑有一个计时器。但是哪个计时器?要调查谁在调用此方法:
我启用了setEnableAsyncStackTraces(true)
(https://www.codenameone.com/blog/better-error-logging.html)
我在方法throw new IllegalStateException("Who Is Calling me?");
之后,我发现哪个计时器正在调用我的方法。但是,这种调试方式并不总是那么实用,因为它迫使我插入一个使应用程序崩溃的异常。
您有建议吗?您认为像Log.printAsyncStackTrace()
这样的新API在这些情况下会有用吗?
谢谢
答案 0 :(得分:1)
您可以使用以下内容:
try {
throw new RuntimeException("This is the caller");
} catch(RuntimeException e) {
Log.e(e);
Log.sendLogAsync();
}
它没有达到应有的效率,但是日志的效率不会更高,并且可能会被开发人员滥用。至少这看起来已经够糟了,所以开发人员知道不要将其留在生产中。