一下内容为我看了第一行代码整理出来的,在此向作者表达感谢;
Context:
1:Context代表上下文环境;通过Context实例可以调用相关资源;
2:Activity和Service都是Context的子类;
Context对象的创建:
Context对象有三种:activity,service,application;所代表的范围是activity范围内,service内,整个应用app内;
application的创建是在启动一个应用的时候就创建的,代表了整个app;
activity和service则是在启动对应activity和service的时候创建的;系统启动了多上个activity和service就有多少的context对象;
总数为:count_context = activity的启动个数+service的启动个数+1(application的对象);
Context的获取:
如果实在activity或者service内部调用的话非常容易获取,但是如果在activity或者service外部获取的时候则会比较困难;
1:把需求扔出去,即让调用方法者传入context对象;
2:自主实现:
1:声明一个类继承Application;
public class MyApplication extends Application{
private Context context;
public void oncreat(){
context = getApplicationContext();
}
public static Context getContext(){
return context;
}
}
2:在AndManifest.xml中修改application的启动项:
and:name=".....MyApplication"
3:此后在其他地方获取Context对象的时候:
MyApplication.getContext()即可;
Intent传递数据加强:
1:Intent传递数据的时候对于基本数据类型都会支持,但是对于自定义对象就罢工了;
2:需要传递自定义对象需要先将自定义的对象进行序列化;也就是将其改为可传输或者可存储的状态;
3:实现方式:
Serializable:
pbulic class DataSend extends Serializable{
public String name;
public int age;
pbulic DataSend(na,ag){
name = na;
age = ag;
}
}
传递:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
DataSend ds = new DataSend("tom",22);
intent.puExtra("send_data",ds);
startActivity(intent);
获取:
DataSend dds = (DataSend)this.getIntent().getSerializableExtra("send_data");
Parcelable:
pbulic class DataSend implements Parcelable{
public String name;
public int age;
pbulic int describeContents(){
return 0;
}
public void writeToParcel(Parcel dest,int flags){
dest.writeString("tom");
dest.writeInt(22);
}
pbulic static final Parcelable.Creator<DataSend> CREATOR = new Parcelable.Creator(){
public DataSend createFromeParcel(Parcel source){
DataSend ds = new DataSend();
ds.name = source.readString();
ds.age = source.readInt();
return ds;
}
}
public DataSend[] newArray(int size){
return new DataSend[size];
}
}
传递:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
DataSend ds = new DataSend("tom",22);
intent.puExtra("send_data",ds);
startActivity(intent);
获取:
DataSend dds = (DataSend)this.getIntent().getParcelableExtra("send_data");
通常情况下推荐使用Parcelable来传递数据;
自定义日志类
public class LogUtil{
public static final int VERBOSE = 0;
public static final int DEBUG = 1;
public static final int INFO = 2;
public static final int WARING = 3;
public static final int ERROR = 4;
public static final int CANLOG = 5;
public static v(String tag,String msg){
if(CANLOG > VERBOSE){
Log.v(tag,msg);
}
}
public static d(String tag,String msg){
if(CANLOG > DEBUG){
Log.d(tag,msg);
}
}
public static i(String tag,String msg){
if(CANLOG > INFO){
Log.i(tag,msg);
}
}
public static w(String tag,String msg){
if(CANLOG > WARING){
Log.w(tag,msg);
}
}
public static e(String tag,String msg){
if(CANLOG > ERROR){
Log.e(tag,msg);
}
}
}
使用方式:
在正常开发中使用LogUtil.x()即可使用相关方法,并且将CANLOG的值设置为比这些级别都大,那么日志都可以正常打印;
在产品的状态将CANLOG的值设为-1,那么所有的日志将不会打印;
调试and程序: