context

作者: 皓皓amous | 来源:发表于2023-11-26 15:30 被阅读0次
    Glide.with(this).load(url).into(imageView);
    with()方法可以接收Context、Activity或者Fragment类型的参数。注意with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片加载也会停止。如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止。
    
    
    下图context :
    ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能的实现类。
    
    ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity,所以Activity和Service以及Application的Context是不一样的,只有Activity需要主题,Service不需要主题。
    
    Context一共有三种类型,分别是Application、Activity和Service。在绝大多数场景下,Activity、Service和Application这三种类型的Context都是可以通用的。不过有几种场景比较特殊,比如启动Activity,还有弹出Dialog。出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。而Dialog则必须在一个Activity上面弹出(除非是System Alert类型的Dialog),因此在这种场景下,我们只能使用Activity类型的Context,否则将会出错。
    
    Application中的Context和Activity中的Context的区别
    
    Activity.this取的是当前Activity的Context,它的生命周期则只能存活于当前Activity
    getApplicationContext() 生命周期是整个应用,当应用程序摧毁的时候,它才会摧毁
    
    
    context.png

    相关文章

      网友评论

          本文标题:context

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