自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录生活中的点滴美好,活在当下!

工欲善其事,必先利其器

  • 博客(191)
  • 收藏
  • 关注

原创 手动实现Kotlin内置函数

内置函数持有值返回值异同点使用场景T.applythisthisT.alsoitthis==apply,持有值不同T.letitreturn判空+空合并操作符T.runthisreturnwith(T)thisreturn==run,调用方式不同takeIfitture=this false=null空合并操作符takeUnlessitture=null false=thistakeIf相反...

2021-09-08 19:24:45 78

原创 JNI线程切换,AttachCurrentThread、DetachCurrentThread的正确使用姿势

JNI线程绑定的普通用法 JNIEnv *env = nullptr; jvm->AttachCurrentThread(&env, nullptr); env->CallVoidMethod(obj, onErrorMethod, -1); jvm->DetachCurrentThread();普通用法的缺陷如果子线程是在C++中创建的,然后通过以上代码来执行Java回调,则没有任何问题但如果子线程是在Java代码中创建的,Java调用了C++代码,C++代码再调

2021-08-03 15:35:44 4520

原创 Android交叉编译

编译动态库gcc -fPIC -shared get.c -o libget.so编译静态库(1先生成.o文件,2把.o文件生成.a)gcc -fPIC -c get.c -o get.oar rcs -o libget.a get.o

2021-03-29 10:10:12 145

原创 Android Okhttp3添加https自签名证书以及Glide4.X添加https自签名证书

一、网络协议HTTP协议Http协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTPS协议Https协议是Hypertext Transfer Protocol Secure(安全超文本传输协议)的缩写,是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。http和https的区别:httphttpsHTT

2020-12-23 17:13:53 1594 3

转载 GLSurfaceView+MediaPlayer播放视频

代码大量拷贝https://blog.csdn.net/king1425/article/details/72773331博客,有兴趣可以去看一下,简单解释了一下流程和相关关联TextureViewMediaActivity代码public class TextureViewMediaActivity extends Activity { private static final String TAG = "GLViewMediaActivity"; private GLSurfac

2022-05-25 10:59:05 644

原创 异常:Only the original thread that created a view hierarchy can touch its views.

android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.切回主线程操作

2022-04-30 13:28:48 392

原创 Android生成Javadoc

-encoding UTF-8 -charset UTF-8 -tag date:a:时间

2022-04-15 16:12:32 2371

原创 SurfaceView和TextureView的区别

SurfaceViewSurfaceView中采用了双缓冲机制,保证了UI界面的流畅性,同时 SurfaceView 不在主线程中绘制,而是另开辟一个线程去绘制,所以它不妨碍UI线程;SurfaceView 继承于View,他和View主要有以下三点区别:(1)View底层没有双缓冲机制,SurfaceView有;(2)view主要适用于主动更新,而SurfaceView适用与被动的更新,如频繁的刷新(3)view会在主线程中去更新UI,而SurfaceView则在子线程中刷新;SurfaceV

2022-04-02 15:01:18 3736 1

原创 AndroidStudio导出JavaDoc提示“目标 11 不允许选项 --boot-class-path“

AndroidStudio生成JavaDoc提示找不到Android源码中的对象,比如Context、View等百度后配置了Android.jar(-bootclasspath /Users/dinghe/Library/Android/sdk/platforms/android-28/android.jar)包后依然出错,

2022-03-15 10:31:05 4307 5

原创 Android Studio 运行 profile crash

Android Studio打开Device File Explorer, 删除/data/local/tmp/perfd文件夹

2021-12-17 16:10:25 1789

原创 mac M1pro 芯片idea提示: No native library is found

解决办法:kapt ‘org.xerial:sqlite-jdbc:3.36.0.1’添加链接描述

2021-12-05 14:44:41 284

原创 Jetpack之workmanager源码解析

<provider android:name="androidx.startup.InitializationProvider" android:exported="false" android:authorities="com.herdin.android.work.androidx-startup"> <meta-data android:name="a..

2021-11-29 13:37:58 1797

原创 Android中出现TransactionTooLargeException异常原因及解决

2021-11-26 16:07:48 1878

原创 工作记录:车载系统框架

2021-11-25 14:36:57 298

原创 Android11 小米10Pro open failed: EPERM (Operation not permitted)

Android10版本的小米10Pro、华为mate30、oppo手机测试都没问题,在红米Android11上出现该问题,于是果断把小米10Pro升级为Android11系统进行调试。本以为是Android11分区所导致,才发现是文件命名不规范导致的。...

2021-11-24 19:08:09 2792

原创 Android 序列化之后Parcelable,数据源变化

查看序列化对象序列化读写顺序是否一一对应

2021-11-12 16:52:59 1590

原创 Room-批量插入数据偶现丢失

2021-10-29 00:08:13 896 1

原创 Room-数据库升级

private val MIGRATION_10_11: Migration = object : Migration(10, 11) { override fun migrate(@NonNull database: SupportSQLiteDatabase) { //执行升级相关操作 //此处对于数据库中的所有更新都需要写下面的代码 //添加某个字段 ...

2021-10-25 11:13:56 197

原创 Room数据库报错Entities and Pojos must have a usable public constructor. You can have an empty constructor

添加@Ignore后编译出错,报Entities and Pojos must have a usable public constructor. You can have an empty constructor…修改前的写法@Entity(tableName = "tb_test")data class TestEntity( /** * 试卷id(主键) */ @PrimaryKey(autoGenerate = true) var id: Long?

2021-10-25 10:52:06 848

原创 解决ARouter 无法在Fragment中收到onActivityResult回调的问题

解决ARouter Fragment中startActivityForResult 无法在Fragment中的onActivityResult收到回调的问题 val postcard = ARouter.getInstance().build(RouterPage.SUBJECT) ARouter.getInstance().fragmentNavigation(this, postcard,1000)fun ARouter.fragmentNavigation(fragment: Frag

2021-10-22 11:16:28 1030

原创 慎用hardwareAccelerated=“false“解决出现OutOfMemoryError设置关闭硬件加速导致播放器黑屏

之前在做公司项目实现文件上传的时候,遇到过OOM的异常,但是又确实需要这么多的内存。出现错误:Throwing OutOfMemoryError failed to allocate a *** byte allocation with *** free bytes and ***mb until OOM看到一篇帖子上提示通过设置关闭硬件加速和开启最大内存,加上以下代码,竟然神奇的好了。android:hardwareAccelerated="false"android:largeHeap="tr

2021-10-19 18:29:37 2387

原创 java.lang.OutOfMemoryError: Failed to allocate a 8208 byte allocation with 3440 free bytes and 3440

内存溢出错误是在Android app运行的时候出现的,这可能是因为app RAM中缓存太多文件或反复实例化相同的位图和视频造成的内存不足现象,下面是我在运行时候所出现的错误。可以在androidmenifest.xml文件中更改application配置,将hardwareAccelerated设置为false,largeHeap设置为true。android:largeHeap = “true”android:hardwareAccelerated = “false”android:allow.

2021-09-29 17:10:44 1304

原创 Android12遇到的问题

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

2021-09-26 23:39:47 1616 6

转载 Android Studio统一依赖管理Composing builds

Android Studio统一依赖管理 背景 在我们的AS项目中,经常引用多个Module,多人参与项目开发,这种背景下,我们会时常遇到版本冲突问题,出现不同的compileSdkVersion等,导致我们的包体变大,项目运行时间变长,所以将依赖版本统一是一个...

2021-09-23 00:17:21 447 1

原创 Kotlin协程中的Flow

flow:emit发射数据 lifecycleScope.launch { //TODO Flow是冷数据,不消费则不生产,只有调用collect()函数时才会发射数据 //SharedFlow则是热流,会立即发射数据 //StateFlow是SharedFlow的一个特殊变种,SharedFlow是Flow的一种特殊类型 //StateFlow与LiveData比较接近,都有stateFlow.value.

2021-09-09 17:02:02 459

原创 AdnroidStuido项目中的WebP

WebP是谷歌提供的一种支持有损压缩和无损压缩的图片文件格式,而且可以提供比JPEG或PNG更好的压缩。AndroidStudio更新到 Arctic Fox之后新建项目的资源图全变成webp格式,以下是AS把PNG格式转化成webp格式的截图:...

2021-08-19 10:34:40 258

原创 2021-08-06 Jetpack之DataStore介绍和工具类的封装

DataStore介绍Jetpack DataStore是一种用来替换SharedPreferences新型数据存储解决方案。 以异步、一致的事务方式存储数据,DataStore 保证原子性,一致性,隔离性,持久性。它是线程安全,且非阻塞的,DataStore在使用上强制开发者将其放在协程中进行调用,保证了主线程的安全,避免SharedPreferences在主线程可能会引发ANR问题。总之,它克服了 SharedPreferences 的一些缺点,解决了 SharedPreferences API 的

2021-08-06 11:04:50 906

原创 MacOS AndroidStudio插件的位置

MacOS AndroidStudio插件的位置:/Library/Application Support/Google/AndroidStudio/plugins

2021-08-04 10:34:19 222

原创 Android Uri和path的相互转换

/** * path转uri * @param context * @param imageFile * @return */ public static Uri getImageContentUri(Context context, java.io.File imageFile) { String filePath = imageFile.getAbsolutePath(); Cursor cursor =...

2021-06-29 14:55:39 1298

原创 进程被防火墙禁止启动process is forbid to start by firewall

2021-06-25 11:17:48 100

原创 adb 命令记录

ADB简介:ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android设备玩家的好玩具。安卓调试桥 (Android Debug Bridge,adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 AndroidStudio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。注:有部分命令的支持情况可能与 Android 系统

2021-04-16 11:16:16 117

原创 工作记录:MessageKit SDK业务图

2021-04-08 13:25:08 355

原创 crash之后,重新new的fragment的hashcode和new完之后生命周期中获取到的该对象的hashcode不同

crash之后,重新new的fragment的hashcode和new完之后生命周期中获取到的该对象的hashcode不同,有大佬能解决吗?

2020-11-17 17:29:27 245

转载 Android studio4.0 Build Output 中文乱码问题

Android studio4.0 Build Output 中文乱码问题 最近更新Android studio 4.0 ,发现了中文乱码的问题,具体如下: 解决方法如下: 双击shift ,输入 Edit Custom VM Options ,如下: 点击第一个,如果没有回提示创建;然后输入: #不要有空格-Dfile.encoding=UTF-8...

2020-11-16 18:02:03 151

转载 Android文字基线Baseline算法的使用讲解

引言 Baseline是文字绘制时所参照的基准线,只有先确定了Baseline的位置,我们才能准确的将文字绘制在我们想要的位置上。Baseline的概念在我们使用TextView等系统控件直接设置文字内容时是用不到的,但是如果我们想要在Canvas画布上面绘制文字时,Baseline的概念就必不可少了。 我们先了解一下Android中Canvas画布绘制文字的方法,如下图: 参数示意: text,文字内容x,文字从画布上开始绘制的x坐标(Canvas是一个原点在左上角的平面坐标系)y,Baselin

2020-11-04 11:11:37 785

原创 Android Jetpack 之 App Startup

App Startup 定义:App Startup 库提供了在应用程序启动时用于初始化组件的简单、高效的方式。开发人员可以使用 App Startup来简化启动序列,并显式地设置初始化顺序。App Startup 允许您定义共享单个内容提供程序的组件初始化器,而不是为每个需要初始化的组件定义单独的 contentProvider。这可以显著提高应用程序的启动时间。App Startup 的导入:目前 App Startup 还处于beta版本: implementatio...

2020-10-10 10:30:01 158

原创 Variable ‘isAutoRelieve‘ is accessed from within inner class, needs to be final or effectively final

Variable ‘isAutoRelieve’ is accessed from within inner class, needs to be final or effectively final

2020-09-09 15:50:36 1213 1

原创 Android开启关闭手机扬声器

/** * 当前音量 */ private static int currVolume = 0; private AudioManager audioManager;@Overridepublic void openSpeaker() { try { if (audioManager == null) { audioManager = ((AudioManager) getSystemService(AUDIO_SE.

2020-07-21 10:15:48 1608

原创 SVN从根目录上下载,导致AndroidStudio项目无法引入版本控制

在idea文件夹下新建vcs.xml文件,就会自动添加上版本控制<?xml version="1.0" encoding="UTF-8"?><project version="4"> <component name="VcsDirectoryMappings"> <mapping directory="" vcs="svn" /> </component></project>...

2020-07-13 18:11:16 169

原创 Android FileProvider详细解析和10.0的适配

今天项目中文件存储的时候,我们都知道7.0以上要通过FileProvider保存文件,但是在小米10pro上报错,无法找到文件路径,对各个系统的反复测试,只有Android Q的手机会出现异常,于是百度才发现是Android10.0 更改了文件存取机制。 Android7.0 (N) 开始,将严格执行 StrictMode 模式,也就是说,将对安全做更严格的校验。而从 Android N 开始,将不允许在 App 间,使用 file:// 的方式,传递一个 File ,否者会抛出 FileUriE.

2020-07-10 12:53:29 8358

空空如也

空空如也

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

TA关注的人

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