重写 等待框 show() 函数,定位那里调用了该函数
问题描述:
工程中把等待框 写成 公共类,很多都在调用show() ,出一个情况,在启动的时候 就转圈等待 但是 又不知道 那里代码 调用了 等待框。
于是 重写了 show函数 故意 制造空指针,程序出错,从打印的错误信息里 就看出 那里调用了show();
另外:
public static class Logger {
private static final boolean enabled = true;
public static void log(String tag, String prevNote, Object obj, String tailNote) {
if (!enabled) return;
if (null == obj) obj = "null";
if (null == prevNote) prevNote = "";
if (null == tailNote) tailNote = "";
String fullClassName = Thread.currentThread().getStackTrace()[3].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
String methodName = Thread.currentThread().getStackTrace()[3].getMethodName();
int lineNumber = Thread.currentThread().getStackTrace()[3].getLineNumber();
if (obj.getClass().isArray()) logA(tag, prevNote, (Object[]) obj, "" + tailNote + "; "+ methodName +" <-- " + className + ".java : L" + lineNumber);
else if (obj instanceof List<?>) logL(tag, prevNote, (List<Object>) obj, "" + tailNote +"; "+ methodName +" <-- " + className + ".java : L" + lineNumber);
else log_(tag, prevNote, obj, "" + tailNote + "; "+ methodName +" <-- " + className + ".java : L" + lineNumber);
}
private static void log_(String tag, String prevNote, Object obj, String tailNote) {
if (!enabled) return;
if (null == obj) obj = "null";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(Calendar.getInstance().getTime());
Log.i("" + tag, "" + prevNote + obj.toString() + tailNote + "; <One> time: " + time + "(" + Calendar.getInstance().getTimeInMillis() + ")");
}
private static void logA(String tag, String prevNote, Object[] objs, String tailNote) {
if (!enabled) return;
if (null == objs) objs = new String[] {"null"};
int size = objs.length;
String output = "";
for (int i = 0; i < size; i++) output += objs[i].toString() + "; ";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(Calendar.getInstance().getTime());
Log.i("" + tag, "" + prevNote + output + tailNote + " <Array " + size + "> time: " + time + " (" + Calendar.getInstance().getTimeInMillis() + ")");
}
private static void logL(String tag, String prevNote, List<Object> objs, String tailNote) {
if (!enabled) return;
if (null == objs) {objs = new ArrayList<Object>(); objs.add("null");}
int size = objs.size();
String output = "";
for (int i = 0; i < size; i++) output += objs.get(i).toString() + "; ";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(Calendar.getInstance().getTime());
Log.i("" + tag, "" + prevNote + output + tailNote + " <List " + size + "> time: " + time + " (" + Calendar.getInstance().getTimeInMillis() + ")");
}
}
能打印出 执行这段代码的 父级;