- 博客(12)
- 收藏
- 关注
原创 Flutter多容器踩坑
背景项目中的flutter混合栈采用类似咸鱼flutter_boost的单引擎方案,不同的Flutter Activity间通过合理的引擎绑定与解绑机制实现多Flutter Activity。此前app内只是针对flutter -> native ->flutter的场景进行适配,且能正常运行,新的业务需求需要实现两个相邻FlutterActivity间的跳转,理论上而言两个相邻FlutterActivity间跳转的剩余工序其实就是截屏操作——防止Flutter Activity引擎解绑时画面
2022-01-06 11:43:26
2246
原创 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
363
原创 面试总结——Android篇
Android基础生命周期,当打开透明activity的生命周期打开透明主题的activty或者dialog:原activty只调用onPause,不调用onStop,因为此时原activty还是可见的;返回原activty时只调用onResume,不走onResStart和onStart;启动模式standard模式:每次启动必定创建一个新的activity示例入栈,不论这个实例是否存在;singleTop: 如果启动的activity已经处于栈顶,就直接复用栈顶的示例,而不会创建新的acti
2021-08-14 14:50:21
462
3
原创 面试题目总结——Java篇;
Java面试相关Java基础接口的特性接口中不能有实例域与静态方法,但可以有静态常量;接口中不存在已实现的方法;接口中方法是public的抽象方法;实现接口的非抽象类必须实现接口中的所有方法;每个类只可以有一个超类但是能实现多个接口;不能用new去实例化一个接口,因为其内部还没有实现方法,但可以声明接口的变量去引用接口的实现类对象;从jdk1.8开始接口允许用default关键字去定义默认的方法实现,静态与非静态皆可;接口与抽象类的区别抽象类只可单继承,接口可以多实现;抽象类中
2021-08-14 12:47:32
164
原创 JVM内存结构(二)类加载器的双亲委派机制
双亲委派机制问题起源:既然类加载器还分那么多种类,那JVM怎么确定某个类在加载时应该使用哪一种类加载器呢,这就引出本文的重点——双亲委派机制。双亲委派机制到底是啥由类加载器分类可以看到类加载器间是有继承关系的,除引导类加载器(Bootstrap ClassLoader)外都是ClassLoader的子类,class文件被送入类加载器后会先被送到父类加载器,一层层地传递一直送到引导类加载器,如果引导类加载器无法加载该class就会把class送往下一层的子类加载器去尝试加载,直到送到可以被成功加载的类
2021-06-14 18:27:14
106
原创 JVM内存结构(一)类加载器
JVM架构可以大致将JVM区分为六个区域,这里简述下各自作用Class文件:我们平时编写的是.java文件,为源文件;.java在执行javac编译后生成.class文件,即字节码文件,jvm实际处理的是字节码文件。类加载子系统:加载class文件,为class文件在运行时数据区初始化数据(例如类、接口和一些静态变量的加载等等)。运行时数据区:就如名字一样,运行时大多的数据运算在此区域进行。执行引擎:执行字节码指令时就会使用到执行引擎(例如要执行本地方法之类的,就由执行引擎去控制运行时数据区执行
2021-06-14 16:45:22
1189
1
原创 flutter与android
flutter与androidandroid启动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
258
原创 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
154
原创 Room使用介绍与案例展示
Room主要组件Room主要包含3个组件,可以大致按以下解释理解Database:数据库,里面含有返回DAO用于操作数据库的抽象方法。Entity:数据库中的表。DAO:访问数据库的工具,insert,delete等对数据库的操作方法要通过DAO进行。使用方法将依赖项添加到build.gradle后syncdependencies { def room_version = "2.2.6" implementation "androidx.room:room-runtime:$
2021-01-27 20:02:46
1013
2
原创 Android培训——Camera1
SurfaceView首先需要明白什么是surface,在Android中可以先粗略地把它理解为是一个用来画图的地方;而surfaceview就是用来显示surface内容的地方。为什么要使用surfaceview一般的View控件例如imageview等,他将自己绘制在父窗口上,而父窗口会每间隔16ms刷新一次(现在高刷屏可能更短?),这意味着普通控件也是16ms刷新一次内容,如果在刷新期间能快速完成绘制工作,则没有问题;但是如果界面更新频繁,绘制复杂(例如相机预览时镜头画面一直在刷新),就容易造
2020-11-23 15:51:52
272
原创 Java虚拟机——String的intern方法
intern方法学习Java内存区域的运行时常量池内容涉及到String的intern方法作用每一次new String都会创建出新的String对象,使用intern方法则会直接将常量池中已有的字符串引用给出(或者原本里面没有立刻新建一个),节约程序占用空间,而不会因new出多个String对象导致OutOfMemoryError,可以提高程序的健壮性;关于字符串String中的intern方法,是当前的字符对象(通过new出来的对象)可以使用intern方法从常量池中获取,如果常量池中不存在该字
2020-11-22 16:58:30
238
原创 记录pb模型转入tflite过程
pb模型转tflite模型用于安卓移植使用示例代码查看结点输入输出shape等信息import argparsetf.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
1066
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人