问:在framework中分辨出现了Slog和Log,请问它们存在什么区别?
答:列如打印Slog.e其源码如下:
public static int e(String tag, String msg) {
return Log.println_native(Log.LOG_ID_SYSTEM, Log.ERROR, tag, msg);
}
Log.e源码如下:
public static int e(String tag, String msg) {
return println_native(LOG_ID_MAIN, ERROR, tag, msg);
}
通过观察它们仅为LOG_ID不同,两者均调用了同样的方法。
public static native int println_native(int bufID,
int priority, String tag, String msg);
效果为Slog会打印出system_process
,而Log会打印出app包名。在framework调试过程中应当注意调用处是否处在system空间还是user空间,以便调试时进行正确的区分。另外一点需要注意的的Slog为hide类,即不希望被app所调用。