一、全局获取Context的技巧
在某些情况下,获取Context并非是那么容易的一件事,有时候还是挺伤脑筋的,不过不用担心,下面我们
就来学习一种技巧,让你的项目在任何的地方能够轻松获取Context。
Android提供了一个Application类,每当应用程序启动的时候,系统会自动将这个类进行初始化,我们就可
以定制一个自己的Application类,一便于管理程序内一些全局的状态信息,比如说全局Context。
import android.app.Application;
import android.content.Context;
/***
* 存放全局的信息,比如全局Context
**/
public class MainApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
可以看到,MyApplication中的代码非常简单。这里我们重写了父类的 onCreate()方法, 并通过调用
getApplicationContext()方法得到了一个应用程序级别的 Context,然后又提供了 一个静态的
getContext()方法,在这里将刚才获取到的 Context进行返回。
二、定制自己的打印日志
虽然 Android中自带的日志工具功 能非常强大,但也不能说是完全没有缺点,例如在打印日志的控制方面就
做得不够好。 打个比方,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都 打印了
大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用 于调试的那些日志,在
项目正式上线之后仍然会照常打印,这样不仅会降低程序的运行效率, 还有可能将一些机密性的数据泄露出
去。
为了解决这个问题,我们可以自己定义日志的打印,当程序处于开发阶段就让日志打印出来,当程序 上线了
之后就把日志屏蔽掉。
/***
* 自己的日志工具
**/
public class LogUtil{
//根据isDebug判断是否打印日志,开发过程中isDebug置为true,当项目上线以后将isDebug置为false
public static final boolean isDebug = true;
public static void v(String tag, String msg) {
if (isDebug) {
Log.v(tag, msg);
}
}
public static void w(String tag, String msg) {
if (isDebug) {
Log.v(tag, msg);
}
}
public static void d(String tag, String msg) {
if (isDebug) {
Log.v(tag, msg);
}
}
public static void e(String tag, String msg) {
if (isDebug) {
Log.v(tag, msg);
}
}
}
这样就把一个自定义的日志工具创建好了,之后在项目里我们可以像使用普通的日志工 具一样使用
LogUtil,比如打印一行 DEBUG级别的日志就可以这样写: LogUtil.d(“TAG”, “debug log”);