笔记类
xianrenli38
这个作者很懒,什么都没留下…
展开
-
android studio 2022版本 logcat版本
新版本的logcat不适应,想换回老版本,那么如此操作即可。原创 2023-02-01 19:21:50 · 575 阅读 · 1 评论 -
AndroidQ跨应用(进程)启动service
A 应用启动后 将B的servic拉起的方式原创 2022-12-05 15:23:36 · 1502 阅读 · 0 评论 -
Settings属性读写
Settings系统属性存储均为xml,分三种:global,system,secure原创 2022-10-31 14:16:16 · 953 阅读 · 0 评论 -
Ubuntu20.04、22.04安装nvidia显卡驱动
ubunt20.04安装显卡原创 2022-06-13 10:20:53 · 28056 阅读 · 11 评论 -
android studio插件 统计代码行数
一直好奇 这个插件如何统计代码行数 注释行数 和空行数的,下载其jar包,查看源码发现,是这样的学习下boolean isInComment = false; Integer total = 0; Integer blank = 0; Integer comment = 0; Integer code = 0; try { BufferedInputStream inputStream = ne原创 2021-10-12 11:19:23 · 345 阅读 · 0 评论 -
判断应用是否为系统应用
android.content.pm.PackageManager pm = ctx.getPackageManager();List<android.content.pm.ApplicationInfo> apps = pm.getInstalledApplications(0); app.flags & ApplicationInfo.FLAG_SYSTEM == 1 //系统应用,反之是第三方app.flags & ApplicationInfo.FLAG_U.原创 2021-09-30 12:08:46 · 954 阅读 · 0 评论 -
asm ,APT,AspectJ,Javassist
asm ,APT,AspectJ,Javassisthttps://xie.infoq.cn/article/d367c19896e4cef6fbb661cf7https://opensource.sensorsdata.cn/wp-content/uploads/%E7%A5%9E%E7%AD%96%E6%95%B0%E6%8D%AE-Android_%E5%85%A8%E5%9F%8B%E7%82%B9%E6%8A%80%E6%9C%AF%E7%99%BD%E7%9A%AE%E4%B9%A6.pdf原创 2021-09-06 20:00:59 · 275 阅读 · 0 评论 -
ViewPager2设置overScrollMode无效
通常对于滑动类的View设置 OverScrollMode=“never”,可以去掉滑动到边界时的阴影,但是对于ViewPage2设置OverScrollMode=“never”,却没有效果。View childat = viewPager2.getChildAt(0);if (childat instanceof RecyclerView) { childat.setOverScrollMode(View.OVER_SCROLL_NEVER);}...原创 2021-08-16 21:20:42 · 644 阅读 · 0 评论 -
偏门面试题
IdleHandler面试官:“看你简历上写熟悉 Handler 机制,那聊聊 IdleHandler 吧?”梗概定义:IdleHandler :是 Handler 机制提供的一种,可以在 Looper 事件循环的过程中,当出现空闲的时候,允许我们执行任务的一种机制。...原创 2021-08-13 11:57:42 · 109 阅读 · 0 评论 -
android内存管理
普通应用的内存游戏内存官网资料https://developer.android.google.cn/topic/performance/memory-management?hl=nb从游戏的视角看android内存管理https://zhuanlan.zhihu.com/p/370467923https://zhuanlan.zhihu.com/p/372883142//腾讯游戏学院专家:手游开发,该如何做好Android内存优化?https://www.gameres.com/865原创 2021-08-13 11:36:03 · 78 阅读 · 0 评论 -
android 进程间内存分配
谷歌的文档真是好.让开发者一目了然.在新手或者老手需要查询资料和解决相关问题时,都能第一时间得到背景资料,给解决问题提供参考.我所待过几家大公司,没有一家的文档能向谷歌写的如此之全.国内市面上的不管啥云,还是公开api,文档也不过尔尔.有些甚至不知所云,必须找到对接人才明白api是干啥的.回看谷歌文档:1文档详尽,细节到位.2搜索功能强大国内好多面试的问题,其实官网中都有详细描述.吃了不能翻墙的亏.这种知识点类型的面试题,感觉面试就是玩信息不对称.https://developer.原创 2021-08-13 10:52:44 · 136 阅读 · 0 评论 -
ConstraintLayout的使用
https://www.cnblogs.com/sjjg/p/14434334.htmlandroidx.constraintlayout.widget.ConstraintLayout原创 2021-08-12 17:35:25 · 87 阅读 · 0 评论 -
android 动画
一个动画插值器 效果的网站 http://inloop.github.io/interpolator/逐帧动画补间动画属性动画( VectorDrawable、AnimatedVectorDrawable ValueAnimator)属性动画实现的组合动画三方动画库Lottie 简介原创 2021-08-11 15:23:48 · 66 阅读 · 0 评论 -
名称解释 android中双缓冲
有两个地方用到1 android view的双缓冲绘图技术分析2 SurfaceView的双缓冲机制第一个感觉是伪需求,应用中没有遇见过第二个是适合视频帧的刷新,是SurfaceView内部已经实现的机制原创 2021-08-03 11:36:23 · 109 阅读 · 0 评论 -
进程间通信
A:作为服务端进程B:作为客户端进程问题场景:服务端进程Crash了,而客户端进程想要调用服务端方法,这样就调用不到了。DeathRecipient对象此时我们可以给Binder设置一个DeathRecipient对象,当Binder意外挂了的时候,我们可以在DeathRecipient接口的回调方法中收到通知,并作出相应的操作,比如重连服务等等。DeathRecipient的使用如下:服务端进程发生了crash,客户端这个时候该怎么办?当然是想办法重新bind服务端了。客户端使用Deat原创 2021-07-28 11:55:14 · 203 阅读 · 0 评论 -
apk容错
最近做apk 容错的操作由于apk量级比较大,1%的bug率,也会有大批用户发生异常.因此考虑apk容灾.市面上大多数都是使用热更新的方式去补完异常.但这个操作依然要集成三方插件,而且用户如果没有网络,那么依然会崩溃,无法升级.这让我想到了另一个思路.本地熔断控制将应用各个模块分级.根据同一天异常发生次数,来设置不同的运行权限.异常等级分三级:正常级,熔断级,末日级核心模块 是必须运行模块,三级都要运行非核心模块 只有正常级,才运行相关逻辑.一天crash5次进入熔断级crash2原创 2021-07-27 17:19:28 · 63 阅读 · 0 评论 -
SharedPreferences 存储流程
1 sp的读取sp 以 map形式,在读取时,一次性,整体进入内存.所以 存时会出现两个步骤,更新内存中的值,更新文件中的值.2 sp的清除sp在使用中,如果只删除文件, 那么由于内存中存在map缓存,在更新sp时,源文件中的值依然会被恢复正确的清除sp的方法是sp.edit().clear().commit()//删除内存中的数据context.deleteSharedPreferences()//删除sp文件sp无法跨进程由于读取时,会有内存缓存.在跨进程过程中,并没有通知另一个进.原创 2021-07-23 18:11:05 · 364 阅读 · 0 评论 -
contentprovider的使用技巧
contentprovider 在query时需要返回一个cursor,好多人一直接的 只有sql数据库才有cursor.其实,使用其他数据时(file,sp),也可以自己在内存中构建一个cursor.MatrixCursor步骤1首先创建一个字符数组,且字符数组的值对应着表的字段,如下://标记列名String[] COLUMN_NAME = { "_id", "name", "price" };步骤2利用MatrixCursor的构造方法,构造一个MatrixCursor,传入的参数原创 2021-07-19 15:45:06 · 186 阅读 · 0 评论 -
Android11适配 包可见性
Android11的包可见性由于做的是应用商店业务,需要获取 手机中已安装应用的包名和版本号但在11上获取包名和版本号缺失败了问题1: PackageManager.queryIntentActivities()接口在Android11是否可用?Android11中,可以使用此接口。为了功能正常,我们还是需要在manefist中声明。格式如下:<queries> <intent> <action android:name="android.intent.acti原创 2021-06-10 13:55:50 · 431 阅读 · 0 评论 -
打包流程 编译流程 构建流程
转载自http://www.jianshu.com/p/cc88488e5163, http://www.jianshu.com/p/2a5b1aa91c52大概分为以下几个步骤1、使用aapt工具将res资源文件生成R.java文件2、使用aidl工具将aidl文件生成对应java文件3、使用javac命令编译工程源代码和上面两步生成的文件,生成class文件4、通过dex工具将class文件和第三方jar包打成dex文件5、用aapt工具将res下的资源文件编译成二进制文件,然后将其和上一步原创 2021-06-08 15:45:27 · 568 阅读 · 0 评论 -
hashmap相关知识点
hashmap相关面试hashmap 在java1.7与1.8的区别hashmap扩容机制(resize)HashMap默认加载因子(loadFactor)为什么选择0.75 和泊松分布有没有关系散列冲突以及解决方案为啥用红黑树不用 平衡二叉树avlJDK8 HashMap底层数组长度,取值2次幂的原因hashmap 在java1.7与1.8的区别什么时候转变为红黑树hashmap扩容机制(resize)什么时候扩容,什么时候缩容?结论 当hashmap中的元素个数超过数组大小*loadFacto原创 2021-06-04 13:39:22 · 206 阅读 · 0 评论 -
Android Runtime.getRuntime().exec()
getRuntimeRuntime.getRuntime().exec共有六个重载方法:public Process exec(String command)public Process exec(String [] cmdArray)public Process exec(String command, String [] envp)public Process exec(String [] cmdArray, String [] envp)public Process exec(String comma原创 2021-06-02 21:58:17 · 5795 阅读 · 4 评论 -
算法总结
一 冒泡排序重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来2、步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较//升序public static void order1(int[] a转载 2021-05-25 14:04:35 · 62 阅读 · 0 评论 -
图形程序接口知多少 | OpenGL、OpenCL、Vulkan、OpenGL ES、WebGL、Metal、Directx
计算机图形程序接口 | Graphics API对于普通的电脑玩家来说这是一个不重要的东西,但对于游戏开发、玩游戏做三维的人来说,这部分知识可能会常常被提及,尤其是涉及到游戏相关的。计算机图形程序接口是一套可编程的开放标准,3D\2D 都需要这部分底层的 API 支持。如果你是一名游戏开发者,没有借助图形 API 来开发游戏的话,这意味着你的游戏想要调用系统硬件(GPU)的时候,这部分的程序需要自己独立开发,这无疑是增加了游戏开发的成本。Graphics API 就是解决这一难题的,开发者只要输入很.原创 2021-05-13 20:42:01 · 1074 阅读 · 0 评论 -
android 安装apk以及安装失败的监听
监听Apk卸载、改变、及安装在android监听这几种状态,其实是非常简单的,就是利用广播来进行监听以下是和应用程序相关的Broadcast ActionACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程序不能接收到这个广播)ACTION_PACKAGE_REPLACED 一个新版本的应用安装到设备,替换之前已经存在的版本ACTION_PACKAGE_CHANGED 一个已存在的应用程序包已经改变,包括包名ACTION_PACKAGE_REMO原创 2021-05-13 15:40:13 · 3413 阅读 · 3 评论 -
编译原理三大圣经——龙书、虎书、鲸书
编译原理三大圣经——龙书、虎书、鲸书下载1.龙书(Dragon book)书名是Compilers: Principles,Techniques,and Tools作者是:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman国内所有的编译原理教材都是抄的它的,而且只是抄了最简单的前端的一些内容。龙书中文版第一版龙书英文版第二版2.鲸书(Whale book)书名是:Advanced Compiler Design and Implementation作者是:St原创 2021-05-12 12:40:01 · 2586 阅读 · 1 评论 -
downloadmanager
使用downloadmanager进行下载权限<!--网络通信权限--> <uses-permission android:name="android.permission.INTERNET"/><!--DownloadManager使用权限--><uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />主要代码如下: //创建下载任务,url原创 2021-05-11 15:48:57 · 506 阅读 · 0 评论 -
WPF中 x:Name和Name的区别
x:Name : 在window中给控件一个唯一应用名称,可以通过名称来调用该子控件Name: xaml 中有些控件的构造方法中存在该参数,做的事情,就是将 name转变为 x:Name因此x:Name的应用范围更广原创 2021-05-07 16:38:43 · 503 阅读 · 0 评论 -
URL、URI和URN三者之间的关系
这里原创 2021-05-07 11:03:23 · 87 阅读 · 0 评论 -
for(;;)和while(true)的区别
结论:for(;;) 比 while(true) 好编译前编译后while (1);mov eax,1test eax,eaxje foo+23hjmp foo+18h编译前编译后for (;;);jmp foo+23h对比之下,for (;;)指令少,不占用寄存器,而且没有判断跳转,比while (1)好。也就是说两者在在宏观上完全一样的功能,但是底层完全不一样,for相对于来说更加简洁明了。...原创 2021-05-06 14:03:54 · 248 阅读 · 0 评论 -
webrtc资料备忘
Google WebRtc Android 使用详解(包括客户端和服务端代码)https://zhuanlan.zhihu.com/p/82446482WebRTC 框架下的实时视频关键路径WebRTC源码分析三:视频处理流程WebRTC Android APIhttps://www.jianshu.com/p/58ae253940f1原创 2021-04-29 18:39:33 · 63 阅读 · 0 评论 -
android12 WorkManager
WorkManager 将成为启动高优先级后台任务的推荐解决方案。之前 jobservice底层已经使用workmanager实现了使用场景:适合周期任务,以及 精确度不那么高的延迟任务.现在android12中 WorkManager 支持加急任务以 Android 12 为目标平台的应用在后台运行时无法再启动前台服务,但一些特殊情况除外。如果应用在后台运行时尝试启动前台服务,并且前台服务不符合任何特殊情况,则系统会抛出 IllegalStateException。...原创 2021-04-22 11:45:06 · 306 阅读 · 0 评论 -
查看sqlite的工具
SQLitestudio5 个免费的受欢迎的 SQLite 管理工具原创 2021-04-20 14:21:19 · 2080 阅读 · 0 评论 -
提交到gerrit仓库(从博客园收藏过来,博客园最近总是出问题)
提交到gerrit仓库git push origin HEAD:refs/for/分支名称刚拉下来项目提交时出现这个异常临时解决:step1:把上面红色的那条gitidir复制下来执行下:step2:执行下面的命令会添加change_id git commit --amend esc键 wq报错提交记录step3:然后推送代码到服务器上 git push origin HEAD:refs/for/$branch_name上面这个情况主要针对本地刚下载的仓库,第一次提交会出现原创 2021-04-15 15:14:39 · 292 阅读 · 0 评论 -
git ssh 生成的密钥如何使用
ssh 生成密钥 多密钥使用原创 2021-04-12 14:05:20 · 1500 阅读 · 1 评论 -
android 资源文件中动态读取float类型数据
用途:深色模式,浅色模式,有个值不一样,不想手动在代码中判断这个数值.因此想在 values和values-night两个文件夹中分别定义这个值,让系统动态获取这个数值方法第一步:在values\demins文件中加入这行<item name="text_button_letter_spacing" format="float" type="dimen">0.1</item>在values-night\demins文件中加入这行<item name="text_原创 2021-04-01 16:45:55 · 907 阅读 · 0 评论 -
OptionMenu
android 中menu的种类android一共有三种形式的菜单:optinosMenuContextMenuandroid一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(subMenu) 参考这里optinosMenuStep 1 在res创建menu<?xml version="1.0" encoding="utf-8"?><menu xmlns:a原创 2021-03-25 12:40:33 · 152 阅读 · 0 评论 -
android字体设置
为了应对不同风的品牌,需要配置不同的字体一、自定义字体1.android Typeface使用TTF字体文件设置字体我们可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。第一步,在assets目录下新建fonts目录,把ttf字体文件放到这。第二步,程序中调用:AssetManager mgr=getAssets();//得到AssetManagerTypeface tf=Typeface.createFromAsset(mgr, "fonts/ttf.ttf");//根据原创 2021-03-24 17:43:33 · 4975 阅读 · 0 评论 -
sql错误码
含义错误码备注#define SQLITE_OK0成功Successful result错误码开始#define SQLITE_ERROR1SQL错误 或 丢失数据库SQL error or missing database#define SQLITE_INTERNAL2SQLite 内部逻辑错误Internal logic error in SQLite#define SQLITE_PERM3拒绝访问Access permiss...原创 2021-03-24 11:09:54 · 659 阅读 · 1 评论 -
actionbar修改箭头
getActionBar().setHomeAsUpIndicator(Drawable drawable);原创 2021-03-23 20:06:49 · 165 阅读 · 0 评论