一、全局获取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,

这样问题就会迎刃而解了!!!

今天就整理这么多,以后在遇到好的技巧,再补充,欢迎各位留言补充,一起努力!!!




更多相关文章

  1. android存储本地数据大全
  2. 理解Android的异步消息处理机制
  3. abd找不到设备的解决方法
  4. Android(安卓)UI设计总结
  5. 第十三篇 Android(安卓)系统电话管理机制与架构二
  6. Android(安卓)Junit
  7. DialogFragment的使用
  8. 使用ContentProvider(内容提供者)共享数据
  9. Android以太网卡配置启动流程和双网卡同时支持的实现

随机推荐

  1. MySQL8.0中的降序索引
  2. 详解mysql中的存储引擎
  3. MySQL 两种恢复数据的方法
  4. MySQL 8.0 之索引跳跃扫描(Index Skip Sc
  5. mysql的登陆和退出命令格式
  6. MySql设置指定用户数据库查看查询权限
  7. MySQL group by和order by如何一起使用
  8. MySQL 8.0.19安装详细教程(windows 64位)
  9. CentOS7.5 安装MySql的教程
  10. mysql split函数用逗号分隔的实现