Handler相关问题
一个线程有几个Handler?一个线程有几个Looper?如何保证? Handler线程是如何切换的? Handler内存泄漏的原因是什么?如何解决? 子线程中使用Looper应该注意什么?有什么用? MessageQueue是如何保证线程安全的? 我们使用Message的时候如何创建它? Looper死循环为什么不会导致应用卡死? 能不能让一个Message被加...
一个线程有几个Handler?一个线程有几个Looper?如何保证? Handler线程是如何切换的? Handler内存泄漏的原因是什么?如何解决? 子线程中使用Looper应该注意什么?有什么用? MessageQueue是如何保证线程安全的? 我们使用Message的时候如何创建它? Looper死循环为什么不会导致应用卡死? 能不能让一个Message被加...
一、ViewModel的使用 在页面(Activity/Fragment)很简单的情况下,通常我们会将UI交互,数据获取与处理等相关业务逻辑,全部写在页面中,但是在页面复杂的情况下,这样做是不合适的,它不符合“单一责任”原则。页面只应该负责接收用户的交互,以及将数据展示到屏幕上,相关数据应该单独存放和处理。 为此,Android为我们提供了ViewModel类,专门用于存放应用程序页面所...
Java单例模式的几种写法,其中懒汉式和双重校验锁方式写法如下: 懒汉式 public class Singleton { private static Singleton instance; private Singleton (){} public static synchronized Singleton getInstance() { if...
Java部分 彻底搞懂Java线程池的工作原理 彻底搞懂Java内存模型与volatile关键字 彻底搞懂Java中的synchronized关键字 彻底搞懂Java中的ReentrantLock实现原理 彻底搞懂Java并发包中的Atomic原子类 深入理解Java线程的等待与唤醒机制(一) 深入理解Java线程的等待与唤醒机制(二) Java并发系列终...
如果您想知道如何制作 deepfake,那么您来对地方了!本 DeepFaceLab 2.0 指南将作为参考和涵盖整个过程的分步教程。DeepFaceLab 可用于各种应用,从娱乐和专业制作,到定制实施和深度学习研究。通过遵循本文档中列出的步骤和建议,您将能够使用 PC 或云计算平台创建最先进的deepfake。 英文原文地址: https://www.deepfakevfx.com/g...
If you’re wondering how to make a deepfake you’ve come to the right place! This DeepFaceLab guide will serve as both a reference and a step-by-step tutorial covering the entire process. DeepFaceLab...
本文主要是Repo的使用,项目里面找到了一个比较好的插件gradle-repo来解决多模块依赖,且不同模块有独立的git仓库,代码的提交问题 原文链接:https://duanqz.github.io/2015-06-25-Intro-to-Repo 1、清华镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ repo init 的时候...
0、自我介绍 1、App启动流程 https://www.jianshu.com/p/c95c208774c2 https://juejin.cn/post/6844904116561379341 https://www.jianshu.com/p/c95c208774c2 启动进程 点击图标发生在Launcher应用的进程,startActivity()函数最终是由Instru...
1、给两个View,返回最近的公共父View 2、ViewModel在Activity异常销毁如何恢复数据 https://developer.android.google.cn/topic/libraries/architecture/viewmodel-savedstate?hl=zh_cn 3、LiveData原理,在子线程里能不能收到消息,快速postValue setVal...
class Singleton private constructor(){ companion object { fun get() : Singleton{ return Holder.instance } private object Holder{ val instance = Singleton() } } }