Android
Android研发曹新雨
莫等闲,白了少年头,空悲切
展开
-
adb 传输文件失败
adb传输一直卡在一在进度 adb install 也是一直卡在一个进度。打开开发者选项,点击默认USB配置。原创 2023-03-03 14:45:58 · 748 阅读 · 0 评论 -
解决No Activity found to handle Intent
activity原创 2022-11-07 19:16:05 · 6285 阅读 · 0 评论 -
SP Flash Tool 报错: ERROR : STATUS_UNSUPPORT_CTRL_CODE (-1073676284)
取消勾选第二个参考:原创 2022-09-29 12:42:48 · 1229 阅读 · 0 评论 -
Android Adb Logcat 截取字符串Python脚本
重启设备之后需要继续监听adb logcat 的输出 截取关键行。设备启动之后会连接网关,此时会在log里打印连接网关的时间。用于计算2000次下平均连接网关的时间。但是只会在初始化的时候连接网关。原创 2022-09-21 23:27:51 · 1106 阅读 · 0 评论 -
Android ArrayMap源码解析
为两个数组实现,mHashes 负责记录Key的hash,key的hash所在的位置index,在mArray对应的位置 index。3.ArrayMap 不需要创建Entry对象 因为全是数组保存的Key Value。正常删除,当数组满足回收条件的时候 回收数组 下一次使用。mHashes 里面的元素是经过排序的 支持二分查找。ArrayMap 为:4 -> 8 -> 1.5倍。Key对应的Hash 放入数组的时候,会进行排序。当创建的数组不用的时候 会进行回收。HashMap默认为16。原创 2022-09-19 15:50:29 · 571 阅读 · 0 评论 -
Android Parcel.createException异常分析
不要只看Parcel.createException,这个不是关键原因,肯定是跨进程调用方法里失败了。原创 2022-08-30 18:24:03 · 1214 阅读 · 0 评论 -
Android ImageView.setVisibility(GONE)不生效
所以我们在setVisibility(View.GONE) 之前 ImageView.clearAnimation() 即可。后来发现,这个ImageView 设置过动画,虽然设置动画在前,setVisibility(View.GONE)在后,应该是在动画结束之后,又调用了setVisibility(View.Visible)导致显示。今天调试一个问题,自己明明对ImageView设置了Gone,但是一直都还是显示的。虽然代码顺序是动画在前 但是无奈动画也有时长。原创 2022-08-24 21:41:58 · 890 阅读 · 0 评论 -
Glide 编译源码失败
报错如下:A problem occurred evaluating project ':annotation:compiler'.> java.lang.NullPointerException (no error message)报错的gradle地方在这里: // This is to support com.sun.tools.javac.util.List, currently used in RootModuleGenerator. compile files(Jv原创 2022-04-12 12:19:21 · 2499 阅读 · 0 评论 -
Android Log isLoggable 使用
方法官方注释:Checks to see whether or not a log for the specified tag is loggable at the specified level. The default level of any tag is set to INFO. This means that any level above and including INFO will be logged. Before you make any calls to a logging m原创 2022-04-11 22:00:26 · 1288 阅读 · 0 评论 -
Glide使用OkHttp加载图片
导入依赖库 implementation 'com.github.bumptech.glide:glide:4.11.0' kapt 'com.github.bumptech.glide:compiler:4.11.0' implementation "com.github.bumptech.glide:okhttp3-integration:4.11.0"方法一: Glide.get(getContext()).getRegistry().replace(G原创 2022-03-30 19:47:40 · 2100 阅读 · 0 评论 -
RxJava zip 使用
间隔发送: String[] codes = irCodeStr.split("\\|"); Observable<String> codesDate = Observable.fromArray(codes); Observable<Long> intervalDate = Observable.interval(interval, TimeUnit.MILLISECONDS);原创 2022-03-29 14:14:57 · 1592 阅读 · 0 评论 -
通讯故障之路
1.最开始确实因为Launcher有问题停止线程有问题多线程同时读取数据导致问题没停止是因为根据Thread.isIntercepter 判断https://caoxinyu.blog.csdn.net/article/details/1193570532.后来上门发现是主控板没有发送数据后来他们分析出来故障现象及原因分析客户反馈在用户端发现*** 型号冰箱项目 偶有主控板与触摸 显板 出现 通信 故障的情况 。经项目软件开发人员分析,主控板与显示板为主从半双工通信 方式 ,在没有原创 2022-03-05 17:42:17 · 390 阅读 · 0 评论 -
Java 获取 Julian Day (Calendar)
/** * 从Calendar获取Julian Day * 算法来源: http://stackoverflow.com/questions/32949757/get-current-julian-day-number-with-gregorian-calendar-in-android */ public static int getJulianDay(Calendar calendar) { int year = calendar.get(C...原创 2021-11-30 15:35:52 · 2159 阅读 · 0 评论 -
Android adb 设置系统时间
adb date 命令MMDDhhmm[[CC]YY][.ss] POSIXP0801K:/ # date 10211416 set 10月21日14:16分YYYY-MM-DD [hh:mm[:ss]] ISO 8601P0801K:/ # date 2023-08-15原创 2021-10-19 15:33:28 · 4022 阅读 · 0 评论 -
解决 NDK is missing a “platforms“ directory.
Android 项目编译报错:NDK is missing a “platforms” directory.If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to D:\soft\Android\Sdk\ndk-bundle.If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOM原创 2021-09-17 17:15:42 · 3653 阅读 · 0 评论 -
Java Thead.interrupt 方法没有使线程停止工作
有问题的interruptpackage com.xinyu.test;public class TestInterrupt { public static void main(String[] args) { TestThread testThread = new TestThread(); testThread.start(); try { Thread.sleep(2000); } catch (In原创 2021-08-03 19:41:10 · 863 阅读 · 0 评论 -
算法----Excel 表中相对应的列名称
题目:给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ... 示例 1:输入:columnNumber = 1输出:"A"示例 2:输入:columnNumber = 28输出:"AB"示例 3:输入:columnNumber = 701输出:"ZY"示例 4:输入:columnNum原创 2021-07-07 16:05:20 · 531 阅读 · 0 评论 -
Java 类不可被继承的几种方法
1.final 修饰符public final class NoModifer { //没有修饰符 默认为包内可见 int age = 10; public NoModifer(){ }}public class Nomodifer2 extends NoModifer{}最常用的,被final 修饰符修饰的类,不可以被继承2.private 构造方法package com.xinyu.test.java.Test;public class原创 2021-06-30 13:45:12 · 5874 阅读 · 0 评论 -
ArrayList 和 LinkedList 源码解析
LinkedList private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next;原创 2021-06-16 19:24:22 · 154 阅读 · 0 评论 -
Android 页面进行镜像反转-面试
解决思路因为Android 的绘制Canvas 是从根层往下遍历,所以我们在dispatchDraw 方法块里面对Canvas 进行镜像旋转即可。当时没有回答上来,其实大概知道思路,但是不知道怎么对Canvas 进行水平反转,就没有说这个方案。可惜了。代码:package com.example.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Matrix;原创 2021-06-16 14:24:21 · 746 阅读 · 0 评论 -
Android 防止快速点击
需求希望页面里的元素,可以防止用户快速点击。但是单用户点击一个元素后,仍然可以快速点击页面上另一个元素。也就是两个元素的快速点击不互相影响当时想到的是,从代码事件分发上拦截,但是后来想到实现不了这个需求。每个元素都应该有自己的上次点击的事件,这样才不会互相影响。所以,我们可以实现一个Listener,然后在这个监听里面做拦截,项目中用到的Listener 都继承自这个Listener.实现:package com.example.util;import android.view.View;原创 2021-06-15 20:44:44 · 351 阅读 · 1 评论 -
Android Handler 流程解析
相关类图Handler、Looper、MessageQeue 处理流程图 public void dispatchMessage(@NonNull Message msg) { if (msg.callback != null) { handleCallback(msg); } else { if (mCallback != null) { if (mCallback.handleM原创 2021-06-15 17:57:28 · 169 阅读 · 0 评论 -
git reflog 退出
英文状态下按Q原创 2021-06-11 11:17:38 · 2205 阅读 · 4 评论 -
数组实现栈,实现push,pop,size方法 -- 面试算法
思考:有几个关键的地方,第一,数组的话,如果我们一直push,需要扩容.第二,因为产生了扩容所以当前数组的大小,不代表存放的数据多少,所以我们需要一个count 表示当前的容量。第三,扩容之后,要把之前的数据copy 到新的数组里面,并且要把数据放到新的数组里面。实现:package com.xinyu.test;public class Test27 { /** * 数组实现栈,实现push,pop,size方法 */ public static vo原创 2021-06-10 20:43:29 · 581 阅读 · 0 评论 -
Android 对象池案例
前言:对象池是对一些常用对象的回收再利用,这样就可以避免创建大量对象,避免对象创建后被GC 回收,然后再次创建,可以解决一些类似于内存抖动的问题。在Android 里面大量使用了这种思想,总结一些常用的案例:Message /** * Return a new Message instance from the global pool. Allows us to * avoid allocating new objects in many cases. */原创 2021-06-10 16:14:52 · 242 阅读 · 1 评论 -
Android Hook ActivityThread mH 消息
背景:今天面试被问到如何监听ActivityThread mH 类的消息,当时的想法是,mH 其实就是Handler, Android 没有提供获取到mH 的方法,就算我可以拿到mH 的 Looper, 最多也就可以在Looper 里面设置一个private Printer mLogging; ,当打印的时候就可以知道当前在分发mH 类的任何消息。但是对方说,不希望在这里拦截,有没有其他方法,当时没有想到Handler 有什么可以设置监听每一个消息的方法,就算有,我如果想要拿到mH 也得通过反射吧。当时原创 2021-06-10 14:48:33 · 1150 阅读 · 0 评论 -
Java 快速排序算法实现-----面试
思路:首先拿到数组第一个元素作为基数,然后遍历数组,比基数小的,放在左边,比基数大的,放在数组右边。遍历一遍之后,再对数组左边和右边分别进行同样的快速排序代码:package com.xinyu.test;import java.util.Arrays;public class Test26 { public static void main(String[] args) { int []arr = new int[]{2,-1,4,18,1,3,6,-99};原创 2021-06-09 21:38:42 · 129 阅读 · 0 评论 -
Android Parcel 使用
TestParcelpublic class TestParcel implements Parcelable { public int age; public int count; public String name; public TestParcel(){ } protected TestParcel(Parcel in) { age = in.readInt(); name = in.readString();原创 2021-06-09 18:50:22 · 817 阅读 · 0 评论 -
Android 事件分发面试题2
问:LinearLayout 里面嵌套Button,LinearLayout 设置了onClick 事件,但是Button 没有设置点击事件,当我点击Button 的时候,LinearLayout 的onClick 会不会执行?答:不会执行,虽然View 的onTouch 对于Action_Down 事件,只要是ClickAble 的控件,默认是返回true,在Action_Up的时候,由于LinearLayout 没有拦截后续事件,所以后续所有的事件还是被Button 给消费了。所以,只有设置了Butt原创 2021-06-09 14:55:22 · 307 阅读 · 0 评论 -
Android JetPack ViewModel 源码解析
是什么?ViewModel 用来存储页面相关的数据,当页面销毁的时候,存储数据也会清楚。但是当页面发生旋转的时候,并不会清楚数据。怎么用? UserViewModel userViewModel = new ViewModelProvider(this).get(UserViewModel.class);UserViewModel 是自己写的ViewModel,就可以拿到页面相关的ViewModel,在这个ViewModel 里我们可以获取LiveData,这样当异步数据加载完成的原创 2021-06-04 16:00:17 · 200 阅读 · 0 评论 -
Android Jetpack LiveData 源码解析
是什么LiveData 是具备生命周期的数据,当数据放生变化的时候,如果页面已经销毁,那么就不会回调给监听者。有什么用?当我们获取到网络请求的数据,如果页面已经销毁了,就不会调用更新Ui 的方法,防止发生空指针等异常。比如常见的Fragment 里面的getContext()方法,当页面销毁了就会返回Null,如果我们调用了就会发生空指针。怎么实现的?类图:androidx.lifecycle.LiveData#observe @MainThread public void原创 2021-06-04 14:39:29 · 188 阅读 · 0 评论 -
Android JetPack Lifecycle源码解析
androidx.lifecycle.LifecycleRegistry#addObserverandroidx.lifecycle.Lifecycling#lifecycleEventObserverandroidx.lifecycle.Lifecycling#resolveObserverCallbackType原创 2021-06-03 16:45:27 · 184 阅读 · 1 评论 -
Windos 解决Flutter 报错
Waiting for another flutter command to release the startup lock…打开任务管理器,搜索dart进程,杀死就可以了原创 2021-05-26 19:09:48 · 268 阅读 · 0 评论 -
Android 打包流程
首先处理资源,生成R文件,然后处理aidl,之后把所有的java 源文件编译成class文件,之后进行混淆,然后生成dex文件,之后把资源、dex 打成一个没有签名的包,最后执行签名。https://www.jianshu.com/p/d22f52a6a6fb...原创 2021-05-25 17:30:24 · 237 阅读 · 0 评论 -
Android selector 使用
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/main_mode_press" android:state_selected="true" android:state_pressed="true"原创 2021-05-19 20:26:26 · 195 阅读 · 0 评论 -
LockSupport 使用
使用:package com.xinyu.test;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.LockSupport;public class LockSupportTest { public static void main(String[] args) { Thread thread = Thread.currentThread(); new Threa原创 2021-05-07 23:17:47 · 230 阅读 · 0 评论 -
解决Android 加载大图片OOM
https://www.jianshu.com/p/da754f9fad51原创 2021-04-29 23:03:51 · 851 阅读 · 0 评论 -
Android 实现歌词变红效果
效果:代码:public class AnimateLoadingTextView extends View { private Paint mPaint; private Paint mPaintOver; private float animValue; private int w; private int h; private float curW; public AnimateLoadingTextView(Context conte原创 2021-04-25 11:08:05 · 284 阅读 · 0 评论 -
PathComposePathEffectView 使用
public class PathComposePathEffectView extends View { private Paint mPaint; private Path mPath; private PathEffect comPathEffect; private PathEffect cornerPathEffect; private PathEffect dashPathEffect; private PathMeasure mPathMea原创 2021-04-25 11:04:35 · 248 阅读 · 0 评论 -
Android 使用CornerPathEffect绘制圆角矩形
public class CornerPathEffectViewTest extends View { private Paint paint; private Path path; private PathEffect pathEffect; private int startY; private Path pathAll; public CornerPathEffectViewTest(Context context) { super原创 2021-04-16 15:16:20 · 1543 阅读 · 4 评论