1、context
Android在new控件的时候,有时候会用this(ClassName.this),有时候会用getContext(),有时候又会见到context,或者getApplicationContext(),那他们有什么区别吗?
TextView textView = new TextView(this);
TextView textView = new TextView(MainActivity.this);//和第一种属于同一类型
TextView textView = new TextView(getContext());
TextView textView = new TextView(context);
TextView textView = new TextView(getApplicationContext());
context可以理解为场景,就是new的这个控件是属于哪个场景的。例如3楼有很多房间,301,302,303…,如果当前控件的context是303房间,那么该控件的场景就是303房间,也就是该控件属于303,与303房间共存亡。对于上面额度四种类型,可以这么理解与使用:
- this(ClassName.this)要在Context的子类中,常见的就是在Activity类中使用,表示此控件是属于该Activity的
- getContext()表示获取控件所在的context
- context,这种使用方法一般是从别的地方将context传过来,然后new的这个控件就是属于这个context了
- getApplicationContext()获取到的是当前Application所在的context,并且要在AndroidManifest中唯一指定,在当前Application的任意位置使用这个方法得到的是同一个Context
2、log
log打印日志,一般有这几种类型log.v,log.d,log.i,log.w,log.e,分别表示Verbose,Debug,Info,Warn,Error,这样就能很清楚的区分每个的区别了吧,它们对应Android studio的logcat中的各项
- Log.v 这里的v代表verbose啰嗦,冗长的意思,任何消息都会输出
- Log.d只输出debug调试,通过“Debug”选项和tag标签来过滤
- Log.i一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示Log.i、Log.w和Log.e的信息
- Log.w可以看作为warning警告,建议我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
- Log.e为error错误,这些错误就需要我们修改了。