android application常见错误
来源:互联网 发布:java工程师工作经历 编辑:程序博客网 时间:2024/06/16 06:09
不过自定义Application也并没有什么副作用,它和单例模式二选一都可以实现同样的功能,但是我见过有一些项目,会把自定义Application和单例模式混合到一起使用,这就让人大跌眼镜了。一个非常典型的例子如下所示:
- public class MyApplication extends Application {
- private static MyApplication app;
- public static MyApplication getInstance() {
- if (app == null) {
- app = new MyApplication();
- }
- return app;
- }
- }
就像单例模式一样,这里提供了一个getInstance()方法,用于获取MyApplication的实例,有了这个实例之后,就可以调用MyApplication中的各种工具方法了。
但是这种写法对吗?这种写法是大错特错!因为我们知道Application是属于系统组件,系统组件的实例是要由系统来去创建的,如果这里我们自己去new一个MyApplication的实例,它就只是一个普通的Java对象而已,而不具备任何Context的能力。有很多人向我反馈使用 LitePal 时发生了空指针错误其实都是由于这个原因,因为你提供给LitePal的只是一个普通的Java对象,它无法通过这个对象来进行Context操作。
那么如果真的想要提供一个获取MyApplication实例的方法,比较标准的写法又是什么样的呢?其实这里我们只需谨记一点,Application全局只有一个,它本身就已经是单例了,无需再用单例模式去为它做多重实例保护了,代码如下所示:
- public class MyApplication extends Application {
- private static MyApplication app;
- public static MyApplication getInstance() {
- return app;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- app = this;
- }
- }
getInstance()方法可以照常提供,但是里面不要做任何逻辑判断,直接返回app对象就可以了,而app对象又是什么呢?在onCreate()方法中我们将app对象赋值成this,this就是当前Application的实例,那么app也就是当前Application的实例了。
0 0
- android application常见错误
- 【常见错误】android常见错误
- IIS常见错误,Server Application Unavailable
- Android 常见错误
- android应用常见错误
- Android常见错误
- Android 常见错误
- Android常见错误
- Android常见错误
- android常见错误
- Android常见错误
- Android常见错误
- Android常见错误
- android make常见错误
- Android常见错误
- Android常见错误处理
- 转载android常见错误。
- 常见android错误
- mybatis模糊查询
- Android 错误 'roundIcon' in package 'android'
- 构建Java Web开发环境
- java泛型类接口派生
- 怎么反驳“你行你上”?
- android application常见错误
- failed to push some refs to 'git@git.oschina.net:ct2101/Resource.git'
- Java中final关键字的作用
- [单元测试]PowerMock+SpringMVC整合并测试Controller层方法(二)
- LeetCode :【Easy】412. Fizz Buzz
- poj 3026 Borg Maze 【prim+bfs】
- 如何退出Activity
- AS 版本升级后工程构建慢的解决方案
- flask如何完成数据库内容在html页面上的显示以及相应数据的删除