
Android 知识点记录
android 知识点记录
胡小牧
岁月推动着年华,伴随着流水的脚步走过春夏秋冬。回想一路走来磕磕绊绊,感谢前辈们的无私奉献,本文重在共享,欢迎大家转载,评论,收藏,点赞,谢谢,如果您对文章存在疑问,或者和您的文章类似,请私信,----------------期待是心痛的根源,心不动,则不痛。
展开
-
android aild 传递多个参数, in ,out,inout
HIDL 使用generates关键字来指定方法的返回值。AIDL 使用inout和inout关键字来指定参数的传递方向。在 AIDL 中,方法的返回值通常是void,而多个返回值通过out参数来实现。原创 2024-10-24 18:15:10 · 746 阅读 · 0 评论 -
HIDL 和 AIDL 的历史背景
Android 7.0 Nougat(2016年) 的发布,Google 引入了 HIDL。它被设计为硬件抽象层(HAL)的接口语言,用于在 Android 系统服务和底层硬件驱动之间建立接口。HIDL 的目标是为 Android 系统的更新提供更好的模块化和版本兼容性,尤其是在项目 Treble 引入之后。:HIDL 是在 Android 8.0 Oreo 时作为项目 Treble 的一部分发布的,旨在改进 Android 系统更新的效率用于定义硬件抽象层 (HAL) 接口。原创 2024-09-29 15:17:45 · 724 阅读 · 0 评论 -
Smart cast to ‘Button!‘ is impossible, because ‘button‘ is a mutable property that could have been c
1 确保为对象为null 的时候不抛出异常,比如的我的这个问题就是在button 后面添加?2 就是把可变对象变成私有的 ,就是把你的声明var 变成val ,这个错误就典型的智能转换 编译器会提示报错的,这个只需要把var 修改成val 即可。3 懒加载,by lazy 来实现。使用那个方法看自己的需求把。处理问题的方法有3 种。原创 2024-09-05 15:57:21 · 566 阅读 · 0 评论 -
android gradle.properties 的作用
3 定义全局属性:你可以在gradle.properties文件中定义一些全局属性,这些属性可以在整个项目中的所有Gradle脚本中使用。6 设置代理:如果你的开发环境需要通过代理服务器访问互联网,你可以在gradle.properties文件中设置代理信息,以便Gradle能够正确地进行网络通信。8 环境变量:虽然gradle.properties文件主要用于Gradle配置,但你也可以在其中设置一些环境变量,以便在构建过程中使用。7 自定义属性:你可以定义自己的属性,并在Gradle脚本中使用它们。原创 2024-08-26 16:00:08 · 650 阅读 · 0 评论 -
AndroidStudio 左侧菜单栏,导航栏,以及代码字体大小调整
好几年没有使用android stdio ,今天下载了一份新的,字体大小调整2分钟没搞定,今天记录一下。或者点击右侧的IDE and Project Settings。这样顶部导航栏,和左侧的菜单栏字体大小就调整好了。1 顶部导航栏和左侧菜单栏字体调整。选择File --Settings。2 代码字体调整如下。原创 2024-08-26 15:28:28 · 1038 阅读 · 0 评论 -
java steam 的使用
说steam 前看下kotlin的一个写法如果用java怎么写。原创 2024-01-21 16:06:38 · 1212 阅读 · 0 评论 -
runOnUiThread 和 handler.post()
是基于Handler机制的方法,适用于已知有与主线程相关联Handler的情况,可以直接利用消息队列进行任务调度。同时,如果需要处理异步结果或者实现更复杂的线程间通信,Handler机制会更加灵活和强大。是Activity的方法,它更通用,不依赖于特定的Handler实例,适合在Activity或Fragment上下文中直接更新UI。这两个示例中,都是在非主线程(子线程)环境中执行的代码片段。它们都试图将一个任务发送到主线程执行。runOnUiThread 和 handler.post()原创 2024-01-15 23:57:02 · 544 阅读 · 0 评论 -
自定义工作线程 HandlerThread + new Handler(handlerThread.getLooper())
是一个继承自 Thread 的类,它在其内部初始化了一个 Looper,因此它是一个可以运行消息循环的线程。这意味着你在 HandlerThread 中创建的 Handler 可以处理其内部消息队列中的消息,而这些消息的处理将在 HandlerThread 所代表的工作线程中完成,而不是在主线程。HandlerThread + Handler 结合使用通常是在需要执行耗时任务(例如文件读写、大量计算、长时间等待的网络请求等),为了避免阻塞UI线程,会创建一个工作线程(如使用。原创 2024-01-15 23:49:15 · 638 阅读 · 0 评论 -
new Handler(getMainLooper())与new Handler()的区别
的线程中调用这个构造函数(即非主线程),如果感觉不好理解,可以把Handler handler = new Handler() 理解为常用在Activity,Fragment,带有界面的地方,如果用在自定义View 或者其他工具类中,不带界面的地方就会报错,如果就是这个,很早之前自己写的一个,如下。类,用于获取当前应用的主线程(也称为 UI 线程)的 Looper 对象。:如果没有明确指定Looper,那么会默认关联到当前线程的Looper,因此若在非主线程且未准备Looper的情况下使用,将会引发异常。原创 2024-01-15 23:25:02 · 1143 阅读 · 0 评论 -
Android AIDL 创建的DEMO
Android 接口定义语言 (AIDL) 与您可能使用过的其他接口语言 (IDL) 类似。您可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信。在 Android 中,一个进程通常无法访问另一个进程的内存。因此,为进行通信,进程需将其对象分解成可供操作系统理解的原语,并将其编组为可供您操作的对象。编写执行该编组操作的代码较为繁琐,因此 Android 会使用 AIDL 为您处理此问题。原创 2024-01-07 14:08:49 · 1784 阅读 · 0 评论 -
Android studio 无法创建AIDL文件
处理方法在app下面的build.gradle中的buildFeatures 添加 aidl = true。Android studio 创建AIDL文件的时候 提示是灰色的无法创建。这个是 kotlin的写法,如果是使用的旧项目修改下格式就行。原创 2024-01-07 13:31:47 · 1140 阅读 · 0 评论 -
Fatal signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x9 in tid 27035 (ff_read), pid 26880
报错:Fatal signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x9 in tid 27035 (ff_read), pid 26880。2 就是在mainfest里面添加配置就好了 application上添加android:allowNativeHeapPointerTagging="false"1 降低android的版本,比如 降低到29 ,这个感觉有点不合理。这个报错是在android的 gradle中填写了支持64位导致的。原创 2023-12-10 16:36:36 · 2167 阅读 · 0 评论 -
Android 新增或者修改lunch的选择项
比如到including device/qcom/common/vendorsetup.sh 这个里面新增1个 xxx。之后执行source build/envsetup.sh,然后lunch 查看,刚才新增的xxxx 已经显示了。如果要修改或者新增一个lunch项 ,可以根据这些目录显示地址到vendorsetup.sh 里面修改即可。这个命令是记载编译信息,平台信息的 ,它会执行各个目录下的vendorsetup.sh,下图是执行source build/envsetup.sh 之后显示目前。原创 2023-06-15 10:24:58 · 1113 阅读 · 0 评论 -
error: .repo/manifests/: contains uncommitted changes
拉去代码的时候执行repo sync报错了:error: .repo/manifests/: contains uncommitted changes这个错误是本地有修改了的代码,没有提交造成简单的方法,就是吧本地修改的代码checkout 掉.原创 2022-02-15 11:01:52 · 844 阅读 · 0 评论 -
android.mk 里面内容介绍
大致如下# 这个是固定的必须要写的,作用是构建系统提供的宏函数 my-dir 将返回当前目录(Android.mk 文件本身所在的目录)的路径LOCAL_PATH:= $(call my-dir)# 这个是固定的必须要写的,作用是CLEAR_VARS 变量指向一个特殊的 GNU Makefile,后者会为您清除许多 LOCAL_XXX 变量include $(CLEAR_VARS)# 指定编译版本,版本有, eng、user还是 userdebug 版本参与编译; optional值所有版本.原创 2021-08-11 13:52:59 · 448 阅读 · 0 评论 -
Make sure no other Soong process is using it
Android 源码编译的时候出现了这个问题,出现问题原因是,我服务器编译代码的网络终端了,再次编译的时候出现的问题,处理方法就是进入out 目录把.lock 文件删除,再次编译即可.原创 2021-07-22 13:09:59 · 1010 阅读 · 1 评论 -
Android Intent setAction的使用注意
Action 的作用:设置要执行的常规操作,一般在界面的隐式跳转(跳转到拨打电话界面等操作),服务,广播,Action用在隐式跳转使用java 代码 Intent intent = new Intent(); intent.setAction("com.hly.view.fling"); startActivity(intent);AndroidManifest 配置文件里面 <activity android:name=".FlingActivity">原创 2021-07-06 10:07:53 · 2985 阅读 · 0 评论 -
Android Intent的 Component 使用
Intent 组成元素的列表说明元素名称 设置方法 说明与用途 Component setComponent 组件,用于指定Intent的来源与目的 Action setAction 动作,用于指定Intent的操作行为 Data setData 即Uri,用于指定动作要操纵的数据路径 Category setCategory 类别,用于指定Intent的操作类别...原创 2021-07-05 14:56:46 · 3240 阅读 · 0 评论 -
Android 判断某个服务是否正在运行
工具类大致如下public class ServiceRunManager { public static boolean isServiceRunning(Context context) { boolean isRunning = false; ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTI原创 2021-06-11 13:13:23 · 2107 阅读 · 1 评论 -
java = 与 == 同时使用问题 (例如 isRead = result == 0;)
今天看到 = 与 == 在一行同时使用,感觉怪怪的,其实他就是先== 判断然后在= 赋值例如下面的代码public class MainActivity extends AppCompatActivity { private boolean isRead = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt原创 2021-05-21 17:59:36 · 403 阅读 · 0 评论 -
error: Can not locate config makefile for product “xx“.
这个问题不一定属于是你的问题,说下我发生问题的原因,lunch xx 的时候出现的问题,就是好奇了为啥呢,xx为项目的编号这个是同事发给我的,最后又问题其他的同事, xx 选错了,我选的那一个配置文件里面没有配置。...原创 2021-05-20 17:36:04 · 3432 阅读 · 0 评论 -
Android 编译源码 注意事项
这里默认环境都配置好了1 首次需要初始化环境source build/envsetup.sh2 选择项目如果知道了项目可以直接使用luncn xx 如果不知道 可以使用lunch 回车查看下 然后输入项目号3 编译项目如果全编 使用 使用make如果单编可以到.mk 的目录执行 mm如果不想cd 目录 可以使用make “package_name”这个package_name 可以到mk 里面查看具体位置如下:...原创 2021-05-20 11:02:03 · 170 阅读 · 0 评论 -
Android CheckBox 点击的时候没有效果
写了一个CheckBox 点击的时候没有效果感觉莫名其妙的,最后在xml 中设置了android:clickable=“true”点击有效果了, 见鬼了.原创 2021-04-06 23:40:56 · 1239 阅读 · 0 评论 -
Windows 安装adb
下面是是三个不同系统的adb 版本,选择对应的版本下载即可.Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zipMac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zipLinux版本:https://dl.google.com/android/repository/platform-t原创 2021-04-05 19:35:28 · 1577 阅读 · 0 评论 -
Android 动画 ViewPropertyAnimator 的使用
ViewPropertyAnimator 说明:ViewPropertyAnimator可为View对象上的选择属性启用自动和优化的动画,ViewPropertyAnimator不是由调用方构造的,而是由将为其动画的属性的View构造的。调用android.view.View#animate()将返回对该视图相应的ViewPropertyAnimator对象的引用。ViewPropertyAnimator 属性:setDuration(); //设置动画时长setInterpol...原创 2021-03-24 16:30:18 · 1675 阅读 · 0 评论 -
Androidx FloatingActionButton 中间图片颜色值修改
修改使用的方法为:app:tint代码如下 <com.google.android.material.floatingactionbutton.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/aa"/> <com.google.androi原创 2021-03-23 17:30:01 · 542 阅读 · 1 评论 -
androidx FloatingActionButton 中间加载的图片显示黑色
出现的效果图如下个人遇到这个问题的大致有2个问题1 图片过大2 图片模糊例如下面的代码 <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content"原创 2021-03-23 17:01:49 · 989 阅读 · 0 评论 -
DecimalFormat 的使用
DecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字 默认采用的是四舍五入模式,当然我们可以修改模式具体用法如下API 地址下面说2个0 和# double str =1.538; DecimalFormat decimalFormat = new DecimalFormat("0"); Log.e("-----decimalFormat", decimalFormat.format(str));/...原创 2021-03-23 13:12:50 · 893 阅读 · 1 评论 -
float a = 3.1; 显示警告的原因
float a = 3.1; 会报错显示如下图所示其实看提示也就知道原因了java 默认带小数的为double 类型,所有我们需要转一下float 类型就行了根据提示写的是这样float a = (float) 3.1; 当然我们换可以写成float a = 3.1f;由于不区分大小写我们大写的F也行如下float a = 3.1F;...原创 2021-03-22 20:20:48 · 1150 阅读 · 0 评论 -
adb install -r ,-d 等的解释
adb install -r 替换已存在的应用程序,也就是说强制安装adb install -l 锁定该应用程序adb install -t 允许测试包adb install -s 把应用程序安装到sd卡上adb install -d 允许进行将见状,也就是安装的比手机上带的版本低adb install -g 为应用程序授予所有运行时的权限...原创 2021-03-22 18:50:38 · 32960 阅读 · 3 评论 -
Android SurfaceView 黑背景的处理方法
SurfaceView 绘制的时候出现黑背景的如下或者如下处理方法就是添加 //画布透明处理 this.setZOrderOnTop(true); this.mSurfaceHolder.setFormat(PixelFormat.TRANSLUCENT);下面是是一个绘制圆环的方法,具体如下,没有黑色的背景public class MySurfaceView extends SurfaceView implements SurfaceHol.原创 2021-02-07 13:37:03 · 4940 阅读 · 1 评论 -
Android SurfaceView 的使用
SurfaceView 的作用:SurfaceView 适用被动更新,如频繁的刷新,在子线程刷新不会阻塞主线程,适用于界面频繁更新 (View适用主动更新)SurfaceView可以控制刷新频率。SurfaceView底层利用双缓存机制,绘图时不会出现闪烁问题。SurfaceView 的使用方法:一般都是view继承SurfaceView,实现SurfaceHolder.Callback接口会自动生成3个方法如下 @Override public void surfaceC原创 2021-02-07 13:31:39 · 4380 阅读 · 0 评论 -
Java / Android String.format 的使用
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。自己使用的地方1 拼接字符串 2 ,多语言文字顺序不同问题,例如中文:距离到公司还有30分钟, 时间是接口获取的, 英文 30min to Company , 这个时候使用String.fromat 处理文字前后位置常见的属性如下:上面的属性下面说几个1%s String 类型在string.xml 中写 <string name="year_time">距离过年还有%1$s...原创 2021-02-05 15:45:14 · 583 阅读 · 0 评论 -
Multiple substitutions specified in non-positional format; did you mean to add the formatted=”false”
make 编译android代码的出现这样的错误这个问题可能是跟android 的版本有关系就是xml 中的String.xml文件的文字使用%s 无法识别引起的, 不过有些版本可以识别下面的就有可能引起Multiple substitutions specified in non-positional format; did you mean to add the formatted=”false”<string name="test">距离过年还有%s天%s小时%s分钟<.原创 2021-02-04 12:51:10 · 1223 阅读 · 0 评论 -
Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck
Ubuntu系统开机的时候黑屏了提示如下处理方法:输入:fsck /dev/sda2 然后回车,(如果你的提示是sda1 这里输入的sda1)然后就是很多提示是否yes 的, yes 回车就可最后输入reboot 重启即可 ,这样电脑就能开机了...........原创 2021-02-04 11:49:26 · 2805 阅读 · 2 评论 -
Android ProgressBar 的使用
Android ProgressBar 分为水平进度条和圆形进度条, 看官方的划分是Indeterminate Progress(不确定的进度) 和Determinate Progress(决定进度) 下面有2个demo 一个是圆形的进度条和一个水平的进度条Indeterminate Progress:当您不知道操作将花费多长时间时,请对进度栏使用不确定模式。不确定模式是进度条的默认模式,它显示循环动画,但未指示特定的进度这也就是官方的圆形进度条一直在旋转的原因吧Determinate ..原创 2021-01-30 17:38:26 · 23004 阅读 · 0 评论 -
Android secondaryProgress 实现带缓冲的进度条,类似电影的缓存进度条
Android 实现带缓冲的进度条,类似电影的缓存进度条 使用的是secondaryProgress, 下面是实现的效果如下progressBar 代码如下 <ProgressBar android:id="@+id/send_progress" style="@android:style/Widget.ProgressBar.Horizontal" android:layout_width="match_p.原创 2021-01-30 16:15:56 · 3120 阅读 · 0 评论 -
Android 使用ProgressBar 实现一个水平方向走动的进度条
实现效果如下进度条设置进度使用的方法setProgress 非常的简单 主要是通过线程设置一个progress 设置数值然后在设置setProgress 就实现了进度,下面就直接写代码了,xml 代码如下 <ProgressBar android:id="@+id/hori_progress" style="@android:style/Widget.ProgressBar.Horizontal" andr原创 2021-01-30 11:30:48 · 3231 阅读 · 0 评论 -
Android - 下载别人的android demo 运行的时候加载很久问题处理
一般从git 下载别人的demo 的时候每次都要加载很久,下载gradle 版本之类的,处理方法把 gradle 下面的 gradle-wrapper 里面的distributionUrl 替换自己本地的 如下同时在项目里面的build.gradle 里面的classpath 也替换自己电脑本地的版本,之后同步下,这样就快很多了,...原创 2021-01-27 11:39:48 · 500 阅读 · 0 评论 -
Android ListView 点击item改变item的背景颜色(ListView实现光标移动)
一下demo 地址实现的效果图如下ListView 光标移动,实现很是简单,这里是指item背景的改变 使用 listSelectorlistSelector 用户指定当前选中item 的颜色.下面说下代码 listview 的代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ..原创 2021-01-26 16:43:17 · 1805 阅读 · 0 评论