Android笔记

本文深入讲解Android中的Handler机制,包括消息发送与处理流程,并探讨了多线程的有效使用方法及跨进程通信技术。同时介绍了adb命令的应用场景,如强制安装APK、查看设备IMEI等。此外还涉及了RxJava、Retrofit等热门库的简介。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Handler发送消息的过程

Handler发送消息的过程:向消息队列中插入了一条消息,MessageQueue的next方法就会返回这条消息给Looper,Looper收到消息后就开始处理了,最终消息由Looper交由Handler处理,即Handler的dispatchMessage方法会被调用,这是Handler就进入了处理消息的阶段.


查看栈顶Activity

adb shell dumpsys activity | findstr "mFocusedActivity"

使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历。

说明:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。 正例:values()返回的是V值集合,是一个list集合对象;keySet()返回的是K值集合,是一个Set集合对象;entrySet()返回的是K-V值组合集合。


RxJava ,Retrofit

RxJava 简单概括为异步,简洁. RxJava 的异步实现,是通过一种扩展的观察者模式来实现的。
Retrofit 是 Square 的一个著名的网络请求封装库。


重新apk签名,注意需要配置jdk环境变量

demo_sign.apk为签名后apk,
demo.apk为原apk,
xxx.keystore为签名文件路径

jarsigner -verbose -keystore xxx.keystore -signedjar demo_sign.apk demo.apk xxx.keystore 

flush()

flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满.


根据泛型T获取class

Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
Class<T> tClass = (Class)params[0];

Gson解析集合

List<Student> studentList = GsonUtil.getInstance().fromJson(listJsonStr, 
new TypeToken<List<Student>>() {}.getType());

adb强制安装apk

adb install -r xxx.apk

Java跨进程

Java中是不支持跨进程内存共享的。因此要传递对象, 需要把对象解析成操作系统能够理解的数据格式, 以达到跨界对象访问的目的。在JavaEE中,采用RMI通过序列化传递对象。在Android中, 则采用AIDL(Android Interface Definition Language:接口描述语言)方式实现。


android去掉自带padding

android:includeFontPadding="false"

查看手机imei

打开拨号键盘输入 *#06#


多线程的使用

有效利用多线程的关键是理解程序是并发执行而不是串行执行的。例如:程序中有两个子系统需要并发执行,这时候就需要利用多线程编程。
通过对多线程的使用,可以编写出非常高效的程序。不过请注意,如果你创建太多的线程,程序执行的效率实际上是降低了,而不是提升了。
请记住,上下文的切换开销也很重要,如果你创建了太多的线程,CPU 花费在上下文的切换的时间将多于执行程序的时间!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值