Android Runnable找到运行调用者

时间:2012-11-22 08:23:15

标签: android multithreading runnable

我继承了一个巨大而可怕的Android项目,让我想起了this post

在这个项目中有一个神秘的Activity实现了Runnable。运行函数失败,因为未正确初始化Activity。我的问题是我不知道Runnable实际上在哪里运行。

如何找到调用此Activity的Runnable接口的位置?断点似乎只显示父线程调用run() - 哇,惊喜。

2 个答案:

答案 0 :(得分:1)

  

我的问题是我不知道Runnable实际上在哪里运行。

如果在Runnable中使用Thread,则应尝试找到new Thread(someObject)之类的代码。

构造函数需要Runnable,如果从类中删除implements Runnnable部分,则创建Thread的代码现在不正确并导致编译器错误,应该告诉您你在找什么。

如果有人直接调用run方法,您可以重命名它,编译器会告诉您哪些地方调用了一个不存在的方法。可替代地

Exception e = new Exception("Debug");
e.fillInstackTrace();
e.printStackTrace();

是一种在不使用调试器或Eclipse等高级IDE的情况下在代码中显示调用层次结构的快速方法。在方法中放入一个有问题的执行分支以查找导致该问题的人有时会很好。

答案 1 :(得分:0)

在项目中搜索Activity类名的引用...可能某些类正在显式创建Activity的对象...