240 发简信
IP属地:四川
  • 文章末有哈

    Kotlin下的5种单例模式

    前言 最近在学习Kotlin这门语言,在项目开发中,运用到了单例模式。因为其表达方式与Java是不同的。所以对不同单例模式的实现进行了分别探讨。主要单例模式实现如下: 饿汉式...

  • @RythmCoder 这个看你简历上整么写了,如果写了,别人肯定要问的

    BAT大厂Android面试知识点,请客官拿好

    前言 年年寒冬,年年也挡不住一个安卓程序员追求大厂的决心。想要进入大厂,我们需要掌握哪些知识点呢?这里,我为大家梳理了一个整体的知识架构。整体包括Java、Android、算...

  • 没有,阿里系

    BAT大厂Android面试知识点,请客官拿好

    前言 年年寒冬,年年也挡不住一个安卓程序员追求大厂的决心。想要进入大厂,我们需要掌握哪些知识点呢?这里,我为大家梳理了一个整体的知识架构。整体包括Java、Android、算...

  • quiteSafely() 回收的消息是比当前结束消息循环时间点大的消息,比当结束消息循环时间点小的消息是不会被回收的。也就是说 quiteSafely() 执行时,可能有一些部分消息会被 Looper 取出执行。而 quite() 方法是直接退出消息循环,消息队列中的消息都不会被执行。那么优势已经很明显了

    Android Handler机制之循环消息队列的退出

    该文章属于Android Handler系列文章,如果想了解更多,请点击《Android Handler机制之总目录》 前言 在上几篇文中我们介绍了整个消息的循环机制以及消息...

  • @WAN____ 能帮助到你,真的非常开心🥳。与君共勉。

    在安卓的道路上铿锵前行

    时间过的真快,马上现在已是2018年的最后一个月了。算算日子,从毕业到现在。从事安卓开发,快三个年头。这一路走来,着实不易,想和大家分享我的故事。分享这一路走来的点点滴滴与心...

  • 查看章节--ViewPager+Fragment 模式下的老方案 中的第二、三幅图,你会发现ThreeFragment 的调用方法顺序为:
    1. ThreeFragment:setUserVisibleHint(boolean isVisibleToUser) isVisibleToUser——>false
    2. ThreeFragment:onResume
    3.ThreeFragment:setUserVisibleHint(boolean isVisibleToUser) isVisibleToUser——>true

    也就是说当ThreeFragment的setUserVisibleHint(boolean isVisibleToUser) isVisibleToUser——>true时,ThreeFragment 的onResume 方法已经执行完毕了。而在1,2步骤时,ThreeFragment 并不可见,实际可见的位置是在步骤3。所以我们需要在 setUserVisibleHint()中调用 judgeLazyInit(),来保证当ThreeFragment可见时,能够正确的进行懒加载,而isCallResume这个变量,就是用来来判断ThreeFragment 的onResume 方法是否已经执行。这样讲不知道你清楚没有😊

    Androidx 下 Fragment 懒加载的新实现

    前言 年后最后一篇文章啦,在这里先祝大家新年快乐~最重要的抽中全家福,明年继续修福报🤣 以前处理 Fragment 的懒加载,我们通常会在 Fragment 中处理 setU...

  • 因为这里有三个线程,所以在调度的时候可能打印顺序会有不同,这里看实际的获取的值就行了,不用关注打印顺序。

    Android Handler机制之ThreadLocal

    该文章属于Android Handler系列文章,如果想了解更多,请点击《Android Handler机制之总目录》 前言 要想了解Android 的Handle机制,我们...

  • 看一下Demo吧 ,https://github.com/AndyJennifer/RecyclerScrollToPosition?from=%E6%96%87%E7%AB%A0%E9%A1%B5%E5%86%85%E9%93%BE%E6%8E%A5

    RecyclerView滚动位置,滚动速度设置

    前言 最近开发中遇到了一个需求,需要RecyclerView滚动到指定位置后置顶显示,当时遇到这个问题的时候,心里第一反应是直接使用RecyclerView的smoothSc...

  • @potato丶土豆_ff42 这么巧吗?😂哈哈哈,赶快白嫖一波

    为什么Java的泛型要用"擦除"实现

    前言 在 Java 中的 泛型,常常被称之为 伪泛型,究其原因是因为在实际代码的运行中,将实际类型参数的信息擦除掉了(Type Erasure)。那是什么原因导致了 Java...

  • 120
    为什么Java的泛型要用"擦除"实现

    前言 在 Java 中的 泛型,常常被称之为 伪泛型,究其原因是因为在实际代码的运行中,将实际类型参数的信息擦除掉了(Type Erasure)。那是什么原因导致了 Java...

  • 120
    ViewModel 这些知识点你都知道吗?

    前言 ViewModel 作为 Jetpack 中的明星组件,相信大家都对其有一定的了解。在 Google 的官方介绍中也详细的罗列了 ViewModel 的优点,如: 可以...

  • navagation 其实是底层其实是用replace fragment的方式来切换Fragment的,所以会完整的走Fragment的生命周期

    但是对于FragmentPagerAdapter与FragmentSaterPagerAdapter的情况,在FragmentPagerAdapter对应执行的是Fragment生命周期中onPause()-onDestroyView()的方法,并没有执行onDestroy和onDetach方法

    在FragmentSaterPagerAdapter对应执行的是Fragment声明onPause()-onDestory(),所以为了满足所有的情况,最好是在onDestoryView()方法中,进行 isLoaded 的判断

    Androidx 下 Fragment 懒加载的新实现

    前言 年后最后一篇文章啦,在这里先祝大家新年快乐~最重要的抽中全家福,明年继续修福报🤣 以前处理 Fragment 的懒加载,我们通常会在 Fragment 中处理 setU...

  • 120
    Androidx 下 Fragment 懒加载的新实现

    前言 年后最后一篇文章啦,在这里先祝大家新年快乐~最重要的抽中全家福,明年继续修福报🤣 以前处理 Fragment 的懒加载,我们通常会在 Fragment 中处理 setU...

  • @看不见我_e968 是这意思。

    Java并发编程之Java内存模型

    该文章属于《Java并发编程》系列文章,如果想了解更多,请点击《Java并发编程之总目录》 一、并发的起源 为了提高计算机处理数据的速度。现代的计算机都支持多任务处理。在32...

  • @看不见我_e968

    线程A对变量a进行赋值操作,需要先经过(read->load )两个操作,将主内存中的a变量的值存入自己的工作内存变量副本中(用a1表示),然后再通过(use)将 a1 的值交给执行引擎进行计算。接着调用(assign)将执行引擎后的值(计算过后新的值)赋值给 a1 ,最后在通过(store-write)将线程A中 a1的值 赋值给变量a。

    这里所说的一个线程(A)多次use与assign操作,是代表着线程 A 在工作内存中对共享变量 a (假设初始值为0)进行了多次操作。而另一个线程(B)是在线程(A)操作之前对共享变量a 进行了read、load操作。那么当线程 (A )使用 (store-write)将线程A中工作内存的值存入主内存时,这个时候线程( B )在工作内存中存储的值仍然是主内存中变量a的初始值,也就是 0。那么这个时候如果线程 B继续对 a进行操作。那么就会出现问题。也就是我们常说的线程安全的问题。所以这个时候需要解决工作内存中的可见性问题。也就是线程A通过 use 与assign 后,线程B需要知道线程A中修改后的值。

    Lock 操作主要会清除线程中工作内存的变量的值。每次Lock操作之后需要重新read load 操作,也就是说线程每次将工作内存中的值刷新到主内存后,如果它还需要对同一变量进行操作,那么它下一次需要重新执行这八个操作。

    Java并发编程之Java内存模型

    该文章属于《Java并发编程》系列文章,如果想了解更多,请点击《Java并发编程之总目录》 一、并发的起源 为了提高计算机处理数据的速度。现代的计算机都支持多任务处理。在32...

  • @看不见我_e968 5.1其实就是讲的是,多个线程操作同一变量a(初始值为0),因为在Java中不同线程对应的是自己的工作内存,现在线程A,B都分别读取了a变量的值,这个时候线程A修改a的值为1,线程B在自己的工作内存中保存的变量a的值还是为0。如果想让A线程修改后的值,让线程B感知。那么就需要解决工作内存的可见性问题。5.1中所描述的原子操作,是线程将变量读取到自己工作内存以及写入到主内存的设计到的几个原子操作。这几个操作都不能不打断。与工作内存的可见性没有太大的关系。只是我将A线程并修改的a变量的值这个操作用原子操作来表示了。不知道这样讲你明白了没有。

    Java并发编程之Java内存模型

    该文章属于《Java并发编程》系列文章,如果想了解更多,请点击《Java并发编程之总目录》 一、并发的起源 为了提高计算机处理数据的速度。现代的计算机都支持多任务处理。在32...

个人介绍
不想做一个程序员,只想做酷酷的程序员。