1.学习一种技巧,让你在你的项目的任何地方都能够轻松获取到Context
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext(){
return context;
}
}
接下来我们需要告知系统,当程序启动的时候应该初始化MyApplication类,而不是默认的Application类。这一步也很简单,在AndroidManifest.xml文件的<Application>标签下进行指定就可以了,代码如下所示:
注意这里在指定MyApplication的时候一定要加上完整的包名,不然系统将无法找到这个类。
这样我们就实现了一种全局获取Context的机制,之后不管你想在项目的任何地方使用Context,只需要调用一下MyApplication.getContext()就可以了。
注意:如果我们已经配置过自己的Application怎么办,这样和LitePalApplication冲突了,任何一个项目都只能配置一个
Application,对于这种情况,LitePal提供了很简单的解决方案,那就是在我们自己的application中去调用LitePal的初始化
方法:
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
public static Context getContext(){
return context;
}
}
2.Intent传递对象的两种实现方式Serializable和Parcelable
Serializable的 实现方式较为简单,但由于会把整个对象进行序列化,因此效率会比Parcelable方式低一些,所以
在通常情况下还是更加推荐使用Parcelable的方式来实现Intent传递对象的功能。
3.定制自己的日志工具
打个比方,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目
已经基本完成,但是却有一个非常让人头疼的问题,之前用于调试的那些日志在项目正式上线之后仍然会照常打印,这样不仅
降低程序的运行效率,还有可能将一些机密性的数据泄露出去。
最理想的情况是能够自由地控制日志的打印,当程序处于开发阶段时就让日志打印出来,当程序上线了之后就把日志屏蔽掉。
只需要定制一个自己的日志工具就可以轻松完成了,新建一个LogUtil类。
public static final int VERBOSE = 1;
public static final int DEBUG = 2;
public static final int INFO = 3;
public static final int WARN = 4;
public static final int ERROR = 5;
public static final int NOTHING = 6;
public static int level = VERBOSE;
public static void v(String tag,String msg){
if (level <= VERBOSE){
Log.v(tag,msg);
}
}
public static void d(String tag,String msg){
if (level <= DEBUG){
Log.d(tag,msg);
}
}
public static void i(String tag,String msg){
if (level <= INFO){
Log.i(tag,msg);
}
}
public static void w(String tag,String msg){
if (level <= WARN){
Log.w(tag,msg);
}
}
public static void e(String tag,String msg){
if (level <= ERROR){
Log.e(tag,msg);
}
}
}
当项目正式上线的时候将level指定成NOTHING就可以了。