记android学习之路----android中的一些小技巧

来源:互联网 发布:淘宝售后客服消差评 编辑:程序博客网 时间:2024/06/16 21:00

一下内容为我看了第一行代码整理出来的,在此向作者表达感谢;
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程序:

0 0
原创粉丝点击