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

一下内容为我看了第一行代码整理出来的,在此向作者表达感谢;
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值