Android
文章平均质量分 60
Android的个人记录
许进进
这个作者很懒,什么都没留下…
展开
-
Android tinker升级之路分析
华为荣耀系统tinker会通过registerDexModule方法注册dex,不会进行重试步骤(1.9.14.25.2版本重试10次,1.9.14.19版本重试3次);android8.0 之下直接使用DexFile.loadDex加载补丁触发dex2oat;android8 ~ android10,通过NewClassLoaderInjector.triggerDex2Oat进行dex2oat;原创 2023-09-14 10:07:11 · 771 阅读 · 0 评论 -
安卓进程间通信浅谈
共享内存是进程间通信的一种方式,通过映射一块公共内存到各自的进程空间来达到共享内存的目的。对于进程间需要传递大量数据的场景下,这种通信方式是十分高效的,但是共享内存并未提供同步机制,一个进程写共享内存时,并无自动机制可以阻止第二个进程开始对它进行读取,所以我们需要类似信号量机制来同步对共享内存的访问。Android中的匿名共享内存(Ashmem)是基于Linux共享内存的,借助Binder+文件描述符()实现了共享内存的传递。它可以让多个进程操作同一块内存区域,并且除了物理内存限制,没有其他大小限制。原创 2023-07-17 14:21:47 · 1437 阅读 · 0 评论 -
ConstraintLayout约束布局使用全解
为何:布局扁平化,减少布局层级,即提高性能;约束布局 默认需要一个垂直方向和水平方向的约束;约束布局中的宽高的0dp含义:充满约束宽高:match_constraint:充满父容器约束居中于控件中⼼⽔平⽅向居中垂直⽅向居中居中于控件的边控件垂直居中于 view 的「下边」填充⽔平⽅向填充⽗容器(通过 )备注:在早期版本中 match_parent 没有效果。为⽔平⽅向的控件设置权重,⼤⼩为 2:1:1 。⽂字基准线对⻬圆形定位通过「圆⼼」「⻆度」「半径」设置圆形定位特殊属性原创 2022-10-30 18:46:49 · 2437 阅读 · 0 评论 -
ArrayMap浅记
key-value键值映射的数据结构,相比HashMap内存空间占用更少(内存管理效率高);Android提供了内存效率更高的ArrayMap,解决HashMap更占内存的弊端;**ArrayMap是Android专门针对内存优化而设计的,用于取代Java API中的HashMap数据结构。为了更进一步优化key是int类型的Map,Android再次提供效率更高的数据结构SparseArray,可避免自动装箱过程。对于key为其他类型则可使用ArrayMap。**HashMap的查找和插入时间复杂度为O(原创 2022-06-26 23:51:18 · 1413 阅读 · 0 评论 -
深度解读ArrayMap优势与缺陷
ArrayMap经典文章:深度解读ArrayMap优势与缺陷;在移动设备端内存资源很珍贵,HashMap为实现快速查询带来了很大内存的浪费。为此,2013年5月20日Google工程师Dianne Hackborn在Android系统源码中新增ArrayMap类,从Android源码中发现有不少提交专门把之前使用HashMap的地方改用ArrayMap,不仅如此,大量的应用开发者中广为使用。然后,你是否研究过这么广泛使用的基础数据结构存在缺陷?要回答这个问题,需要...转载 2022-06-26 23:49:08 · 736 阅读 · 0 评论 -
Android EditText使得输入默认两位小数
val textWatcher: TextWatcher = object : TextWatcher { override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { var s = s if (s.toString().contains(原创 2021-08-26 15:46:50 · 1961 阅读 · 0 评论 -
Android-命令行中利用JDK签名应用
Android平台发布应用程序之前,必须经过一个签名流程。现在您的密钥就是您的身份证明,您所要做的就是使用您的密钥,将未经过签名的apk包签名,然后再进行发布。jarsigner简单使用说明jarsigner -verbose -keystore ~/Workspace/mykeystore -signedjar ./meizuemptyapk-release-signed.apk ./meizuemptyapk-release-unsigned.apk meizu给apk包签名的方式有..原创 2021-07-02 14:12:34 · 4810 阅读 · 0 评论 -
Android 新建module时的ByteCode Level
在升级原创 2021-06-15 11:40:43 · 8227 阅读 · 1 评论 -
Android小技巧之View控件圆角弧度设置
// 设置View圆角radius fun setRadius(view : View, radius:Float){ view.run { outlineProvider = object : ViewOutlineProvider() { override fun getOutline(view: View, outline: Outline) { // 设置圆角率为 ...原创 2021-05-27 22:13:02 · 8480 阅读 · 0 评论 -
Android:JNI开发介绍与小结
目录一 概念介绍1.1 JNI1.2NDK1.3 交叉编译1.4 指令集1.5微架构1.6 ABI二 工程实践2.1新建工程2.2 已有工程三 生成So库四动态加载 so 库4.1何为动态加载4.2 动态加载优点4.3 实现步骤4.4 总结参考文章:一 概念介绍某些计算密集型的运算,我们大多不会在 java 层来实现,一般使用 native 层处理,比如一些视频的解码等,最终会通过 C/C++ 来实现,然后编译成 so(共享...原创 2021-02-18 14:24:18 · 4554 阅读 · 2 评论 -
Android视图对象绑定方式的抉择对比分析
前言视图对象绑定我理解的大致分为三个时代,第一石器时代:findViewByid;第二青铜时代:Butter Knife;第三后Butter Knife时代:ViewBinding与KAE。以下是我最近看到的一篇关于视图绑定方式对比介绍的文章《谁才是ButterKnife的终结者?ViewBinding与Kotlin-android-extension的选择》,感觉不错转载如下。Google在Android Studio 3.6 Canary 11版本中正式推出视图绑定(View Binding),转载 2020-06-02 11:41:43 · 5489 阅读 · 1 评论 -
Android:BaseMultiItemQuickAdapter打造嵌套/多级列表
效果图:1 引入库implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'2 对象bean一级列表:package com.lucas.yanfriends.model.YanNew.select;import com.chad.library.adapter....原创 2020-02-12 21:59:52 · 13560 阅读 · 6 评论 -
Android:解决ViewPager+Fragment切换显示不Chart图表
今天在绘制图表时发现,MpAndroidChart绘制完在ViewPager+Fragment切换场景下无法显示出chart,一开始我以为是MpAndroidChart的问题,但是老牌开源也不应该,换了Highcharts也一样,折腾半天发现:无论用什么表格框架,最后你的chartView调用下.invalidate()就好了!每次切换Viewpager的时候都会再次生产一次图表,所以,图...原创 2020-02-12 21:56:15 · 4790 阅读 · 0 评论 -
Android 可下拉上拉效果的ScrollView
<com.lucas.yanfriends.myview.smoothscroll.StretchContainer android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/...原创 2020-02-08 17:11:08 · 4995 阅读 · 0 评论 -
Android:圆形CheckBox
style="@style/Widget.AppCompat.CompoundButton.RadioButton"原创 2020-01-23 23:20:43 · 7995 阅读 · 0 评论 -
android 一个典型的drawable
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="false"> <shape android:shape="rectan...原创 2020-01-14 16:04:05 · 4768 阅读 · 0 评论 -
android app内跳转具体qq号进行qq对话
case R.id.tv_contact_kefu: if (LucasUtil.checkApkExist(LoginActActivity.this, "com.tencent.mobileqq")){ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mq...原创 2020-01-12 15:43:44 · 5132 阅读 · 0 评论 -
Android - DataBinding源码解读(内存消耗和双向绑定原理分析)
目录一 代码Demo二 解析2.1关键的ActivityMainBindingImp()2.22.3三 总结3.1 内存消耗的三个地方:3.2如何实现双向绑定的一 代码Demohttps://github.com/LucasXu01/AndroidDemo/tree/master/NetEase_DataBinding先熟悉demo中的用法,会使用...原创 2020-01-02 18:04:58 · 13487 阅读 · 6 评论 -
安卓设计模式演变之经典三层模型(MVC/MVP/MVVM)
转载请标明出处!先看代码demo再回看文章效果最佳!目录一 mvc1.1 概述1.2作用流程1.3现状1.4致命弱点/缺点:1.5代码Demo二 mvp2.1 概述2.2作用流程2.3 优点2.4 代码Demo三 mvvm3.1 概述3.2操作步骤3.3 注意点3.4缺点3.4代码demo一 mv...原创 2019-12-30 18:00:29 · 5227 阅读 · 1 评论 -
Android :‘implementation’ 、 ‘api’ 、 ‘compile’ 区别和建议
api 指令 完全等同于compile指令,没区别;可以将所有的compile改成api,完全没错,避免报错:compile' is obsolete and has been replaced with 'implementation' and 'api'.implement指令 这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法...原创 2019-12-04 16:07:00 · 5237 阅读 · 0 评论 -
Android view绘制完成后获得宽高等其他属性
tv_title.getViewTreeObserver().addOnDrawListener(new ViewTreeObserver.OnDrawListener() { @Override public void onDraw() { recy_video_title.setLines(2); ...原创 2019-11-03 11:48:46 · 5085 阅读 · 0 评论 -
Android:获取需要显示的字符串所占的宽度和高度
Rect bounds = new Rect();String text = "测试";TextPaint paint;paint = findViewById(R.id.hello_world).getPaint();paint.getTextBounds(text, 0, text.length(), bounds);int height = getStringHeight = (...原创 2019-10-24 14:39:28 · 5680 阅读 · 0 评论 -
Android error:资源空指针/找不到资源:android.content.res.Resources$NotFoundException: Resource
找不到资源报错:android.content.res.Resources$NotFoundException: Resource#802 android.content.res.Resources$NotFoundExceptionResource "com.ysalliance.qifan:drawable/bucircle" (7f070064) is not a Drawa...转载 2019-10-24 11:13:08 · 5239 阅读 · 0 评论 -
Gson 解析之 - 如何让 json 键和实体类的属性名不一样
Gson 解析之 - 如何让 json 键和实体类的属性名不一样最近Gson用的比较多,用的时候一直有一个疑问,难道本地的实体类的属性名一定要和Json的键一一对应吗?json数据{ "name": "wangzhen", "age": 20, "tall": "176", "sex": "male"}对应的实体类public class Perso...转载 2019-10-22 15:19:48 · 5258 阅读 · 1 评论 -
Android Studio快捷键
Android Studio快捷键翻译 2015-09-23 09:05:32 · 5185 阅读 · 0 评论 -
android-当android studio更新时遇到Connetion failed
由于众说周知的原因,我们有时无法正确的更新我们的Android Studio版本,虽然之前我可以通过修改studio.exe.vmoptions里面的选项,可以达到更新,但是不知道什么时候,这种方法已经无法生效了,万般无奈,我从网络上找到了一种新的方法,离线更新。下面就对离线更新的方法,做一下阐述。原创 2015-11-29 16:41:15 · 5371 阅读 · 0 评论 -
No Android facet found in the module 的解决办法
在github上下载安卓代码在本机运行的时候由于环境不一样,运行时可能会报出这样的错误:No Android facet found in the module原创 2015-11-29 16:51:56 · 6547 阅读 · 0 评论 -
ButterKnife基本使用
Butter Knife处理字段和方法绑定. 重要更新: 目前(2016.4.29), ButterKnife的最新版本是8.0.1.Demo项目已更新: https://github.com/mengdd/AndroidButterKnifeSample以下原文是针对ButterKnife v6.1.0的, v8.0.1主要的不同在以下几个关键词:转载 2017-04-17 21:14:57 · 5294 阅读 · 0 评论 -
Android中的Sqlite数据库操作总结
目录一:介绍二:SQLiteOpenHelper2.1 SQLiteOpenHelper帮助类简介2.2 通过MyDatabaseHelper实现类创建数据库2.3 通过SQLiteOpenHelper中的onUpdate() 方法升级数据库2.4 升级数据库的最佳方式三:SQL数据库CURD3.1 sql语句方式3.2SQLiteDatabase 的非sql...原创 2019-07-11 19:58:26 · 5844 阅读 · 0 评论 -
DDMS File Explorer 中的文件无法访问和导出pull
问题2:File Explorer 中的文件无法访问还记得刚刚说的吗,openFileOutput() 方法生成的文件存放在一个默认路径,即 /data/data/(package name)/files 下。由于我的包名是 com.knightaoko.filepersistencetest,所以在下文的叙述中,大家看到这个陌生的字符串不要惊讶,实际操作下替换成你自己的包名即可。(这期间原创 2017-05-09 11:26:17 · 7878 阅读 · 5 评论 -
android的sqlite获取当天数据的sql语句
SELECT count(*) FROM 表名 WHERE strftime('%m-%d','now','localtime') = strftime('%m-%d',表中时间字段)1以上查询语句只需修改 where 字符串增以增加更多限制条件。“strftime(‘%m-%d’,’now’,’localtime’) = strftime(‘%m-%d’,表中时间字段)”是本查询原创 2017-05-10 11:46:44 · 6000 阅读 · 0 评论 -
java/Android error系列01: Value of type org.json.JSONObject cannot be converted to JSONArray
在使用官方提供的:JSONObject来解析json数据时报错:Value of type org.json.JSONObject cannot be converted to JSONArray一般得到的json返回数据:jsonData解析如下:: private void parseJSONWITHJSONObject(String jsonData){ JSO...原创 2018-06-21 17:54:47 · 12672 阅读 · 3 评论 -
Android small skill系列01:EditText去掉底部直线+自定义光标Cursor
关键是这两行代码:android:background="@null"android:textCursorDrawable="@drawable/youbiao其中:android:textCursorDrawable="@drawable/youbiao"youbiao表示在drawable文件夹下自建的游标样式:如:youbiao.xml<?xml version="1.0" enco...原创 2018-06-21 18:22:44 · 5356 阅读 · 0 评论 -
Android error系列02:Must be called from main thread of fragment host
问题描述:在Aactivty当中,利用onBackPressed()方法返回到Bactivity(含3个fragement)中的的某一个刚刚进入Aactivity的fragement时出现错误如下问题原因:在跳转时,必须在主线程中进行,因此可以在handler中利用Looper.getMainLooper()方法***用Looper.getMainLooper()就表示放到主UI线程去处理。解决办...原创 2018-06-22 12:34:56 · 14052 阅读 · 1 评论 -
Android error系列03:Can't create handler inside thread that has not called Looper.prepare()
问题描述:在子线程中new一个Handler,报以下错误:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 问题分析: 这是因为Handler对象与其调用者同在子线程中。1)安卓基础知识储备:异步消息处理线程:异步消息处理线程启动后会进入...原创 2018-06-24 13:49:19 · 5339 阅读 · 0 评论 -
Android 运行时权限终极总结
目录一:基础&起因二:基本使用2.1Activity当中的一般用法2.2 Fragement中的用法三:注意事项和打电话例子3.1 注意事项3.2 相关API3.3使用原生API的零时权限例子四:常见轮子/推荐4.1PermissionsDispatcher4.2AndroidUtilCode中的权限类(本人惯用)4.3RxPer...原创 2018-06-29 17:53:11 · 11126 阅读 · 0 评论 -
Android small skill系列03:安卓倒计时按钮的实现
需求场景: 验证码注册发送后的等待;实现效果:实现代码:1、使用CountDownTimer安卓背景知识:CountDownTimer是android中自带的倒计时类,需要两个参数:一个是总计时的时间,一般验证码是60秒,就是60*1000。第二个参数是设置计时的速度,1000就是每秒一次。 如果总长度是10秒,速度是1,那么就是10-9-8-7-6-5-4-3-2-1-0; 如果...原创 2018-06-25 15:42:34 · 5333 阅读 · 0 评论 -
Android small skill:开发中防止刚进入activity时edittext获取焦点,自动自动弹出软键盘
刚进入activity的时候,如果布局组件有edittext的话,往往edittext会获取焦点,自动弹出软键盘,影响整个界面的视觉效果。解决方法如下:可以在edittext的父布局结构中(例如LinearLayout,RelativeLayout等)添加android:focusable="true"android:focusableInTouchMode="true"这个两个属性,就可以了。...转载 2018-06-27 13:56:29 · 5577 阅读 · 0 评论 -
Android开发常用代码块(pref/Intent/Toast/粘贴板/ED焦点/添加ing...)
(一) sharedPreferences//存SharedPreferences.Editor editor = getSharedPreferences("bdduserdata",MODE_PRIVATE).edit(); editor.putString("name", name); ...原创 2018-06-28 11:39:22 · 5421 阅读 · 0 评论 -
Android约束布局:ConstraintLayout学习文章记录
(一)Android新特性介绍,ConstraintLayout完全解析:https://blog.csdn.net/guolin_blog/article/details/53122387(二)ConstraintLayout 完全解析 快来优化你的布局吧:https://blog.csdn.net/lmj623565791/article/details/78011599参考 官方文档...原创 2018-08-20 17:51:45 · 5155 阅读 · 0 评论