我继承了一个庞大而可怕的 Android 项目,它让我想起了这篇文章。
在这个项目中,有一个神秘的 Activity 实现了 Runnable。运行函数失败,因为 Activity 未正确初始化。我的问题是我不知道 Runnable 实际运行在哪里。
如何找到调用此 Activity 的 Runnable 接口的点?断点似乎只是显示父线程调用 run() - 哇,惊喜。
我继承了一个庞大而可怕的 Android 项目,它让我想起了这篇文章。
在这个项目中,有一个神秘的 Activity 实现了 Runnable。运行函数失败,因为 Activity 未正确初始化。我的问题是我不知道 Runnable 实际运行在哪里。
如何找到调用此 Activity 的 Runnable 接口的点?断点似乎只是显示父线程调用 run() - 哇,惊喜。
我的问题是我不知道 Runnable 实际运行在哪里。
如果Runnable
在 a 中使用Thread
,则应该有new Thread(someObject)
您尝试查找的代码。
构造函数需要 a Runnable
,如果您implements Runnnable
从类中删除该部分,则创建该部分的代码Thread
现在不正确并导致编译器错误,该错误应该告诉您您要查找的内容。
如果有人run
直接调用该方法,您可以重命名它,编译器会告诉您哪些地方调用了不存在的方法。或者
Exception e = new Exception("Debug");
e.fillInstackTrace();
e.printStackTrace();
是一种在代码中显示调用层次结构的快速方法,无需使用调试器或 Eclipse 等高级 IDE。有时,在方法中放入有问题的执行分支以查找导致该问题的原因有时会很好。
在项目中搜索Activity类名的引用...可能是某个类显式地创建了Activity的对象...