2018-11-27 20:50:00.614 29110-29110/com.demo D/ActivityThread: Added TimaKeyStore provider
格式:timestamp PID TID log-level log-tag
| timestamp | PID | TID | package name | log-level | log-tag |
| — | — | — | — | — | — |
| 时间戳 | 进程id | 线程id | 包名 | 日志类型 | 日志tag |
系统提供的日志虽然已经具备了基本的信息,但是我们可以改进现有的Log功能。
比如提供Log打印类名、方法名、行数。
这样我们直接Ctrl + L输入行数就可以跳转到Log输出的位置,加快问题定位速度。
public class LogUtil {
public static String customTagPrefix = “ddnosh”;
private static final boolean isDebug=true;
private LogUtil() {
}
private static String generateTag() {
StackTraceElement caller = new Throwable().getStackTrace()[2];
String tag = “%s.%s(Line:%d)”;
String callerClazzName = caller.getClassName();
callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(“.”) + 1);
tag = String.format(tag, callerClazzName, caller.getMethodName(), caller.getLineNumber());
tag = TextUtils.isEmpty(customTagPrefix) ? tag : customTagPrefix + “:” + tag;
return tag;
}
public static void d(String content) {
if (!isDebug) return;
String tag = generateTag();
Log.d(tag, content);
}
public static void d(String content, Throwable tr) {
if (!isDebug) return;
String tag = generateTag();
Log.d(tag, content, tr);
}
public static void e(String content) {
if (!isDebug) return;
String tag = generateTag();
Log.e(tag, content);
}
public static void e(String content, Throwable tr) {
if (!isDebug) return;
String tag = generateTag();
Log.e(tag, content, tr);
}
public static void i(String content) {
if (!isDebug) return;
String tag = generateTag();
Log.i(tag, content);
}
public static void i(String content, Throwable tr) {
if (!isDebug) return;
String tag = generateTag();
Log.i(tag, content, tr);
}
public static void v(String content) {
if (!isDebug) return;
String tag = generateTag();
Log.v(tag, content);
}
public static void v(String content, Throwable tr) {
if (!isDebug) return;
String tag = generateTag();
Log.v(tag, content, tr);
}
public static void w(String content) {
if (!isDebug) return;
String tag = generateTag();
Log.w(tag, content);
}
public static void w(String content, Throwable tr) {
if (!isDebug) return;
String tag = generateTag();
Log.w(tag, content, tr);
}
public static void w(Throwable tr) {
总结
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的Android开发中高级必知必会核心笔记,共计2968页PDF、58w字,囊括Android开发648个知识点,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。
虽然面试失败了,但我也不会放弃入职字节跳动的决心的!建议大家面试之前都要有充分的准备,顺顺利利的拿到自己心仪的offer。
加入社区》https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0
考。
2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。
虽然面试失败了,但我也不会放弃入职字节跳动的决心的!建议大家面试之前都要有充分的准备,顺顺利利的拿到自己心仪的offer。
加入社区》https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0