美文网首页
浅谈单例模式在自定义Application中的使用

浅谈单例模式在自定义Application中的使用

作者: 奔跑的佩恩 | 来源:发表于2022-07-25 09:24 被阅读0次

前言

之前在学习Kotlin相关知识的时候,有讲到自定义Application用单例模式实现的相关知识,大家有兴趣的话可参考以下文章
Kotlin笔记(61) — 自定义Application实现单例的方式
之所以现在对该单例模式的实现再次提起,原因是最近在看单例模式实现方式方面的知识,大家有兴趣的话可以参看
单例模式(八)—单例模式总结
那么今天就让我们对自定义Application单例模式的实现来重新认识和巩固下吧。
今天涉及以下知识:

  1. 自定义Application的操作
  2. 为什么自定义Application的单例实现,没有严格按单例模式写法实现
  3. 自定义Application单例模式代码

一. 自定义Application的操作

关于自定义Application的操作的操作,我在文章 Kotlin笔记(61) — 自定义Application实现单例的方式 中已经讲解过,这里就不再重复讲解了,大家有兴趣的话可跳转到该文章查看。
那么这里我们就假设在开发中继承Application自定义Application名为AppContext

二. 为什么自定义 Application 的单例实现,没有严格按单例模式写法实现

在实现单例模式的时候,我们知道,一般都会写一个private无参构造函数,避免外界对该类实行了初始化创建。
但是在自定义 Application 单例实现的过程中,我们并没有去写一个private无参构造函数,这是因为 在Android中,Application本身就是一个单例对象,并且我们在自定义 Application 单例实现的过程中不能用 new 一个 自定义 Application 对象的方式来写代码,因为查看Application 源码,我们可以看到以下代码:

    public Application() {
        super(null);
    }

即若我们在实现自定义 Application 单例时,若调用了new 自定义Application ()的话,就会调用以上super(null);方法,进而调用以下代码:

public class ContextWrapper extends Context {
    @UnsupportedAppUsage
    Context mBase;

    public ContextWrapper(Context base) {
        mBase = base;
    }
    
    //以下代码省略
    //......
}

就会偶尔导致程序报Applcation 对象或 Context 为 null 的问题。这为项目开发带来极大隐患。因此,自定义 Application 单例实现的写法,有了一些变化。

三. 自定义 Application 单例模式代码

下面给出自定义Application(即AppContext)单例模式代码:

相关文章

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • 浅谈单例模式在自定义Application中的使用

    前言 之前在学习Kotlin相关知识的时候,有讲到自定义Application用单例模式实现的相关知识,大家有兴趣...

  • Java单例模式(Singleton)

    1. 什么是单例模式 Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在...

  • iOS单例模式容错处理

    ios 单例模式容错处理 1、单例模式的使用和问题解决 在ios开发的过程中,使用单例模式的场景非常多。系统也有很...

  • OC - 单例模式

    导读: 一、什么是单例模式 二、单例的作用 三、常见的单例类 四、自定义单例类的方法 一、什么是单例模式 单例模式...

  • Android 架构5 设计模式之单例模式

    前言 Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,...

  • @sychronized和dispatch_once,以及对单例

    在iOS开发中,经常使用到单例。单例是Cocoa中被广泛使用的设计模式之一。单例使得某个类在整个applicati...

  • Java几种单例模式的实现

    Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类...

  • Java -- 单例设计模式

    Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类...

  • java的单例模式——其实很简单

    Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类...

网友评论

      本文标题:浅谈单例模式在自定义Application中的使用

      本文链接:https://www.haomeiwen.com/subject/cogwirtx.html