定义全局的Context和定义自己的打印日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/uniquemei/article/details/52415507

一、全局获取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”);

展开阅读全文

没有更多推荐了,返回首页