Как уже упоминалось @CommonsWare:
, лучший ответ - изменить дизайн приложения таким образом, чтобы вам было все равно, почему выполняется ваш код.
Но на самом делеВы можете получить общее представление о том, почему ваше приложение было вызвано с помощью запроса сообщения MainLooper
.Для этого вы можете использовать следующий код:
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
s, отправленных системой вашему приложению для его запуска.Вы должны вызвать этот метод как можно раньше, и в журналах вы увидите что-то вроде этого:
Looper{41ff0388}
mRun=true
mThread=Thread[main,5,main]
mQueue=android.os.MessageQueue@41ff03a8
Message 0: { what=100 when=-438ms obj=ActivityRecord{41ff43e0 token=android.os.BinderProxy@41ff3b78 {com.your.package/com.your.package.MainActivity}} }
Message 1: { what=132 when=+9s911ms }
(Total messages: 2)
Сообщение N - это сообщения, которые были отправлены системой вашемуприложение.Здесь вы увидите различные сообщения, и эти сообщения должны дать вам общее представление о вызывающих пользователях вашего приложения.