自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

赵彦军

做一只快乐的程序猿!

  • 博客(10)
  • 资源 (2)
  • 收藏
  • 关注

原创 Kotlin by属性委托

在 Kotlin 中,通过 by 实现属性委托,属性委托 是什么意思呢?简单来说,就是属性的 set、get 的操作,交给另一个对象器完成。举个例子:class Example { var p: String by Delegate()}语法是: val/var <属性名>: <类型> by <表达式>。在 by 后面的表达式是该 委托, 因为属性对应的 get()(与 set())会被委托给它的 getValue() 与 setValue() 方法。

2021-08-26 21:33:18 1328

原创 Android Annotation注解详解

文章目录Java注解元注解说明@Retention@Target通过反射获取注解信息方法使用注解方法的参数使用注解Java注解Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。Jav

2021-08-24 19:59:41 1855 5

原创 Android Kotlin Coroutines ktx扩展

本篇文章主要讲的是,kotlin 协程在 ktx 上的扩展lifecycle 扩展对于 lifecycle 的扩展,已经在 以前的文章中讲过了https://blog.csdn.net/zhaoyanjun6/article/details/106413283主要的依赖implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"viewModel 扩展对于 viewModel 的扩展,已经在 以前的文章中讲过了https:/

2021-08-20 20:37:49 448

原创 Android ViewModel详解

视图与数据模型之间的桥梁ViewModelViewModel的生命周期会比创建它的Activity、Fragment的生命周期都要长。即ViewModel中的数据会一直存活在Activity/Fragment中。众所周知,由于Android平台的特殊性,若应用程序发送屏幕旋转的时候会经历Activity的销毁与重建,这里就涉及到数据保存的问题。虽然Activity可以通过onSaveInstanceState()机制保存与恢复数据,但是onSaveInstanceState()方法只能存储少量的数据进行恢

2021-08-20 19:37:50 22220 1

原创 Android 应用目录分析

沙箱私有目录内部存储空间中的应用私有目录val filesDir = filesDir/data/user/0/com.example.myapplication/filesval cacheDir = cacheDir/data/user/0/com.example.myapplication/cache是 app 的私有目录,也称沙箱。App 卸载后,此目录随之删除。文件管理器无法访问,除非root。还有一种方法,把手机连到到电脑上,运行 app debug 模式,用 Android

2021-08-12 17:57:01 1231

原创 JAVA多线程中wait()方法的详细分析

最近看帖子,发现一道面试题:启动两个线程, 一个输出 1,3,5,7…99, 另一个输出 2,4,6,8…100 最后 STDOUT 中按序输出 1,2,3,4,5…100题目要求用 Java 的 wait + notify 机制来实现,重点考察对于多线程可见性的理解。wait 和 notify 简介wait 和 notify 均为 Object 的方法:Object.wait() —— 暂停一个线程Object.notify() —— 唤醒一个线程从以上的定义中,我们可以了解到以下事

2021-08-12 16:15:03 8214 3

原创 JAVA多线程中join()方法的详细分析

虽然关于讨论线程join()方法的博客已经非常极其特别多了,但是前几天我有一个困惑却没有能够得到详细解释,就是当系统中正在运行多个线程时,join()到底是暂停了哪些线程,大部分博客给的例子看起来都像是t.join()方法会使所有线程都暂停并等待t的执行完毕。当然,这也是因为我对多线程中的各种方法和同步的概念都理解的不是很透彻。通过看别人的分析和自己的实践之后终于想明白了,详细解释一下希望能帮助到和我有相同困惑的同学。首先给出结论:t.join()方法只会使主线程(或者说调用t.join()的线程)进入等

2021-08-11 18:16:40 583 1

原创 Android NDK学习笔记6:异常处理

JNI捕获异常如果 JNI 调用 java 代码,Java 代码发生发生异常,会发生什么情况举例:class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) find

2021-08-09 21:37:18 637

原创 Android NDK学习笔记5:引用类型管理

在 JNI 中,有三种引用类型全局引用局部引用弱引用局部引用在方法中定义的局部引用,可以不用手动释放,在程序运行结束后,会自动释放。但是有一种情况,比如在方法中有 for 循环,如果产生大量的局部引用,会占用大量内存。所以一种比较好的编程习惯就是,产生的局部变量,一旦不再使用,就手动释放一下。void DeleteLocalRef(jobject localRef)举例说明:extern "C"JNIEXPORT void JNICALLJava_com_example_myapp

2021-08-09 20:13:24 320

原创 Android NDK学习笔记4:JNI访问Java构造函数

JNI 访问 Java 的构造函数,有两种写法//第一种 env->NewObject(cls, init);//第二种方式一:NewObjectUtil.java 类public class Util { int age = 100; //这个方法 c 调用,创建对象 public Util() { Log.d("util-", "init"); }}在 Activity 中声明 getUtil 方法。如下:class

2021-08-03 14:01:23 1316

Pepk 签名压缩工具

Android app 签名生成工,执行完命令,会生成 output.zip , 然后把 output.zip 上传即可,非常好用

2020-04-16

XShell+XFtp

灵活、轻便的SFTP/FTP客户端 通过Xftp 5在网络中安全传输文件,实现多窗口 编辑,进行文件同步。

2018-02-26

空空如也

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

TA关注的人

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