自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Flutter多容器踩坑

背景 项目中的flutter混合栈采用类似咸鱼flutter_boost的单引擎方案,不同的Flutter Activity间通过合理的引擎绑定与解绑机制实现多Flutter Activity。此前app内只是针对flutter -> native ->flutter的场景进行适配,且能正常运行,新的业务需求需要实现两个相邻FlutterActivity间的跳转,理论上而言两个相邻FlutterActivity间跳转的剩余工序其实就是截屏操作——防止Flutter Activity引擎解绑时画面

2022-01-06 11:43:26 2082

原创 Kotlin Learning No_1

Kotlin学习记录 笔者就职的小组近日正筹备新项目,预备在新项目中引入kotlin以便适配之后Google的各种新框架或特性等(如jetpack compose就是使用kt),而且个人认为kt的空安全特性有利于降低项目的维护难度与提高应用的稳定性,在此记录一下自己的入坑之旅。 Kotlin变量声明与类型判断 kt不需要显示地声明变量类型,而是类似flutter的声明语法以赋值的类型判断,以var/val替代原声明变量的位置,需要声明类型则是在变量名后加“:Class”,而且摒弃final关键字,以val替

2021-09-08 19:53:23 320

原创 面试总结——Android篇

Android基础 生命周期,当打开透明activity的生命周期 打开透明主题的activty或者dialog:原activty只调用onPause,不调用onStop,因为此时原activty还是可见的;返回原activty时只调用onResume,不走onResStart和onStart; 启动模式 standard模式:每次启动必定创建一个新的activity示例入栈,不论这个实例是否存在; singleTop: 如果启动的activity已经处于栈顶,就直接复用栈顶的示例,而不会创建新的acti

2021-08-14 14:50:21 385 3

原创 面试题目总结——Java篇;

Java面试相关 Java基础 接口的特性 接口中不能有实例域与静态方法,但可以有静态常量; 接口中不存在已实现的方法; 接口中方法是public的抽象方法; 实现接口的非抽象类必须实现接口中的所有方法; 每个类只可以有一个超类但是能实现多个接口; 不能用new去实例化一个接口,因为其内部还没有实现方法,但可以声明接口的变量去引用接口的实现类对象; 从jdk1.8开始接口允许用default关键字去定义默认的方法实现,静态与非静态皆可; 接口与抽象类的区别 抽象类只可单继承,接口可以多实现; 抽象类中

2021-08-14 12:47:32 107

原创 JVM内存结构(二)类加载器的双亲委派机制

双亲委派机制 问题起源: 既然类加载器还分那么多种类,那JVM怎么确定某个类在加载时应该使用哪一种类加载器呢,这就引出本文的重点——双亲委派机制。 双亲委派机制到底是啥 由类加载器分类可以看到类加载器间是有继承关系的,除引导类加载器(Bootstrap ClassLoader)外都是ClassLoader的子类,class文件被送入类加载器后会先被送到父类加载器,一层层地传递一直送到引导类加载器,如果引导类加载器无法加载该class就会把class送往下一层的子类加载器去尝试加载,直到送到可以被成功加载的类

2021-06-14 18:27:14 77

原创 JVM内存结构(一)类加载器

JVM架构 可以大致将JVM区分为六个区域,这里简述下各自作用 Class文件:我们平时编写的是.java文件,为源文件;.java在执行javac编译后生成.class文件,即字节码文件,jvm实际处理的是字节码文件。 类加载子系统:加载class文件,为class文件在运行时数据区初始化数据(例如类、接口和一些静态变量的加载等等)。 运行时数据区:就如名字一样,运行时大多的数据运算在此区域进行。 执行引擎:执行字节码指令时就会使用到执行引擎(例如要执行本地方法之类的,就由执行引擎去控制运行时数据区执行

2021-06-14 16:45:22 1131 1

原创 flutter与android

flutter与android android启动flutter 导入flutter的aar或者module后指定android中的一个空activity继承FlutterActivty,该Activity就是启动flutter main.dart的入口 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {

2021-05-25 21:15:53 184

原创 Handler操作

leak警告 直接做如下定义时,Handler会隐式地持有一个外部类对象的引用,如果用户想要关闭当前Activity,则因为handler持有一个外部引用而导致Activity无法被GC回收 private MyHandler myHandler = new MyHandler(this); @SuppressLint("HandlerLeak") Handler handler = new Handler(){ @Override

2021-01-28 15:29:09 115

原创 Room使用介绍与案例展示

Room主要组件 Room主要包含3个组件,可以大致按以下解释理解 Database:数据库,里面含有返回DAO用于操作数据库的抽象方法。 Entity:数据库中的表。 DAO:访问数据库的工具,insert,delete等对数据库的操作方法要通过DAO进行。 使用方法 将依赖项添加到build.gradle后sync dependencies { def room_version = "2.2.6" implementation "androidx.room:room-runtime:$

2021-01-27 20:02:46 890 2

原创 Android培训——Camera1

SurfaceView 首先需要明白什么是surface,在Android中可以先粗略地把它理解为是一个用来画图的地方;而surfaceview就是用来显示surface内容的地方。 为什么要使用surfaceview 一般的View控件例如imageview等,他将自己绘制在父窗口上,而父窗口会每间隔16ms刷新一次(现在高刷屏可能更短?),这意味着普通控件也是16ms刷新一次内容,如果在刷新期间能快速完成绘制工作,则没有问题;但是如果界面更新频繁,绘制复杂(例如相机预览时镜头画面一直在刷新),就容易造

2020-11-23 15:51:52 223

原创 Java虚拟机——String的intern方法

intern方法 学习Java内存区域的运行时常量池内容涉及到String的intern方法 作用 每一次new String都会创建出新的String对象,使用intern方法则会直接将常量池中已有的字符串引用给出(或者原本里面没有立刻新建一个),节约程序占用空间,而不会因new出多个String对象导致OutOfMemoryError,可以提高程序的健壮性; 关于字符串String中的intern方法,是当前的字符对象(通过new出来的对象)可以使用intern方法从常量池中获取,如果常量池中不存在该字

2020-11-22 16:58:30 183

原创 记录pb模型转入tflite过程

pb模型转tflite模型用于安卓移植 使用示例代码查看结点输入输出shape等信息 import argparse tf.enable_eager_execution() tf.reset_default_graph() # 重置计算图 def network_structure(args): args.model = "AdvancedEast.pb" model_path = args.model with tf.Session() as sess: t

2020-10-26 21:49:41 1012 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除