正如@CommonsWare已经提到:
更好的答案是重新设计你的应用程序,你不关心为什么你的代码正在运行。
但实际上你可以得到为什么你的应用程序被称为倾销的信息查询一个总体思路。您可以使用下面的代码来做到这一点:
public static void dumpMainLooper(Context context) {
Looper looper = context.getMainLooper();
try {
looper.dump(new Printer() {
@Override
public void println(String s) {
Log.d(LOG_TAG, "- " + s);
}
}, "AppMainLooperDump");
} catch (Throwable th) {
Log.d(LOG_TAG, "App Main Looper error", th);
}
}
您不应使用此代码对你的应用程序的任何“逻辑”,但你可以用它来完成调试和/或记录得到一个总体思路约由Intent
由系统发送到您的应用程序来启动它。你应该尽可能早地调用此方法,并在日志中,你会看到这样的事情:
Looper{41ff0388}
mRun=true
mThread=Thread[main,5,main]
[email protected]
Message 0: { what=100 when=-438ms obj=ActivityRecord{41ff43e0 [email protected] {com.your.package/com.your.package.MainActivity}} }
Message 1: { what=132 when=+9s911ms }
(Total messages: 2)
消息ñ - 这是这是由系统发送到您的应用程序一个消息。在这里你会看到不同的消息,这个消息应该给你一个关于你的应用程序调用者的一般想法。
请尝试更改您的问题 – 2011-12-19 14:00:26
我是否正确理解您的情况:您已描述可能导致应用程序运行的场景,并且您希望在运行时知道触发启动的事件你的申请? – appas 2011-12-19 15:17:17
是的,绝对正确。 – 2011-12-19 15:28:50