Android应该掌握的高级技巧
16lz
2021-01-26
一、全局获取Context的技巧------随处都可以获得Context,也就是说全局Context
思想:Android提供了一个Application类,每当程序运行的时候,系统会自动调用这个类进行初始化。而我们可以自己定制一个Application类,
以便于管理程序中的一些全局的状态信息,具体的代码如下:
public class MyApplication extends Application{private Context context;@override//重写父类的onCreate()方法public void onCreate(){//通过调用getApplicationContext()方法来获得一个应用程序级别的Contextcontext=getApplicationContext();}//将获得的context进行返回public static Context getContext(){return context;}}
接下来我们需要告知系统,当程序启动的时候应该初始化MyApplication类,而不是默认的Application类。这一步只要在 AndroidManifest.xml文件的标签中进行指定就可以了。
这样两步之后无论我们想在什么地方使用Context,直接使用MyApplication.getContext()方法就可以了。
二、使用Intent来传递对象
由于Intent本身能够传递的数据类型有着很大的限制,我们可以通过Serializable和Parcelable的方法来实现传递自定义的对象。
Serializable是序列化的意思,表示将一个对象转换成可存储或者可传输的状态。序列化后的对象可以在网上进行传输,也可以存储在本地。
序列化的方法很简单,只要实现Serializable这个接口就可以。
假设有一个Person类,其中包含了name和age两个字段,将其进行序列化:
public class Person implements Serializable{private String name;private int age;public String getName(){return name;}public void setName(String name){this.name=name;}public int getAge(){return age;}public void setAge(int age){this.age=age;}}
接下来使用Intent进行数据的传递: Person person=new Person();person.setName("Tom");person.setAge(22);Intent intent=new Intent(FirstActivity.this,SecondActivity.class);//由于Person实现了序列化接口,所以可以直接传入putExtra的方法intent.putExtra("person_data",person);startActivity(intent);
获取这个对象; Person person=(Person)getIntent().getSerializableExtra("person_data");
三、定制自己的日志工具
原因:当我们在编写一个比较庞大的项目时候,期间为了方便调试,在代码的很多地方都打印了大量的日志文件,当项目完成的时候不可能一行行将这些日志文件删除
,我们可以自由的控制日志文件的打印,当程序处于开发阶段就叫日志打印出来,当程序上线以后就把日志屏蔽掉。
public class 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 final 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 v(String tag,String msg){if(LEVEL<=VERBOSE){Log.v(tag,msg);}}public static void e(String tag,String msg){if(LEVEL<=ERROR){Log.e(tag,msg);}}}
这样,当使用时可以使用(打印DEBUG信息,此时的LEVEL应该不大于DEBUG的值) LogUtil.d("TAG","debug log");
使用了这种方法以后,我们可以在开发阶段将LEVEL指定为VERBOSE,然后在项目正式上线的时候将LEVEL指定为NOTHING, 这样问题就会迎刃而解了!!!
今天就整理这么多,以后在遇到好的技巧,再补充,欢迎各位留言补充,一起努力!!!
更多相关文章
- android存储本地数据大全
- 理解Android的异步消息处理机制
- abd找不到设备的解决方法
- Android(安卓)UI设计总结
- 第十三篇 Android(安卓)系统电话管理机制与架构二
- Android(安卓)Junit
- DialogFragment的使用
- 使用ContentProvider(内容提供者)共享数据
- Android以太网卡配置启动流程和双网卡同时支持的实现