自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

原创 Android随笔-VPN判断

Android中判断当前网络是否非VPN /** * 判断当前网络是否为VPN * @param context * @return */ public static boolean hasVPN(Context context) { // 查询网络状态,被动监听网络状态变化 ConnectivityManager cm = (ConnectivityManager) context.getSystemService(C

2023-08-05 21:27:22 1849

原创 lifecycleScope Unresolved reference

导入了lifecycle.lifecycleScope,但是在activity中使用lifecycleScope报错出现Unresolved reference找不到引用。Activity中无法使用lifecycleScop,将其改成继承AppCompatActivity()即可解决报错问题。代码中的activity继承Activity。

2023-08-05 21:23:17 625

原创 You need to use a Theme.AppCompat theme (or descendant) with this activity

1、若Activity继承的是AppCompatActivity,可以在添加主题或修改原来的主题为AppCompat主题。2、 若Activity继承AppCompatActivity,条件允许的,可将其改成继承Activity。

2023-08-05 21:20:22 273

原创 Android随笔-Binder

Binder是客户端与服务端进行通信的媒介,当bindService的时候,服务端会返回一个包含了服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或数据,这里的服务包含普通服务和AIDL的服务。Binder做为Android中核心机制,在Android中用于跨进程通信,Activity,Service等组件相互通信都是先和AMS通信,然后通过。一种虚拟的物理设备,设备驱动为/dev/binder,该通信方式在Linux中没有。Binder是一种进程间的通信机制。

2022-10-08 09:46:29 326

原创 Flutter中TextField和图标对齐

Flutter中使用TextField输入框时,若是左右两边有图标的时候,经常会出现输入框内的文字和图标对不齐的情况。提示内容和搜索图标没有对齐。输入内容和图标没有对齐。当搜索框高度有限时,这种对不齐的情况会更加明显。

2022-09-09 10:12:45 1736 1

原创 Android随笔-IPC

类型优点缺点场景Bundle简单易用数据类型有限,数据大小有限四大组件间的通信AIDL支持一对多并发,支持实时通信使用复杂,需要处理好数据同步问题一对多且可以远程调用服务Socket功能强大,可网络传输,支持一对多并发实时通信使用繁琐网络数据交换Messager支持一对多串行,支持实时通信,功能一般不支持远程调用另一个进程的服务,并发难以处理,只支持Bundle 支持的数据类型无并发,串行,且不是远程调用服务文件共享简单不适合高并发,没有办法做到实时通信。

2022-09-07 17:15:58 793

原创 Android随笔-Serializable和Parcelable

序列化与反序列化是Android中进程间通信常用的手段之一,Serializable和Parcelable都可以实现对象的序列化和反序列化,Serializable是Java提供的,属于统一接口,而Parcelable是Android提供的,属于Android特有的。

2022-09-07 10:48:30 648

原创 Android随笔-线程池

ThreadPoolExecutor

2022-09-06 08:45:00 134

原创 Android随笔-指纹识别

指纹识别错误时,系统都会给出响应的错误码和错误信息,比如:没有预先录入指纹,设备不支持等等。指纹识别成功后继续下一步操作。只有执行该行代码才会出现相应的指纹识别页面,若之前没有录入指纹,或设备不支持等会直接给出错误信息,但不会出现指纹识别页面。其实就相当于Dialog,但是样式不能动,只能修改其中指定位置的样式,不同手机指纹识别的页面不一样,但文字部分都有的。3. 定义识别回调。

2022-09-06 08:45:00 361

原创 Android随笔-AsyncTask

AsyncTask对象必须在主线程创建。一个AsyncTask对象只能执行一次,多次调用execute方法回报错。执行方法 execute必须在主线程中调用。程序中不建议直接调用AsyncTask中的方法,调用execute回自动执行的。execute执行串行任务。executeOnExecutor可执行并行任务。使用ThreadPoolExecutor线程池进行任务执行。使用Handler进行线程切换。AsyncTask不适合特别耗时的后台任务。

2022-09-05 08:45:00 162

原创 Android随笔-ClassLoader

任何一个Java程序都有一个或多个class,程序运行时,需要将class文件加载到JVM中才可以使用,负责加载class文件的就是ClassLoader。每一个Class对象内部都有一个classLoader字段来标记该对象应该由哪一个ClassLoader加载。..代码中的ClassLoader就是本文要概述的类加载器。

2022-09-01 18:46:58 475

原创 Android随笔-ViewPager2

Android随笔-ViewPager2与TabLayout的使用

2022-08-31 17:24:21 1529

原创 Android随笔-虚拟机

Android开发虽然基于Java,但是有自己的虚拟机,Android应用程序运行在ART/Dalvik虚拟机上,并非Java虚拟机。Android虚拟机其实也算是Java虚拟机,两者大部分特性是相同的,主要不同在于执行文件和执行指令集。...

2022-08-30 19:24:17 1094

原创 Java随笔-泛型

泛型,即“参数化类型”,就是将类型由原来的具体类型改成类似于方法中变量参数那样,在使用的时候再传入具体的类型。这种在使用时候将操作的数据类型作为参数,常用在类,方法,接口中。...

2022-08-29 19:46:33 247

原创 Java随笔-锁

Java中哪些是线程安全的,哪些是线程不安全的?使用final修饰的就是安全的,Vector是一个线程安全的容器,ArrayList线程不安全的,为了解决线程安全问题,引入了锁机制。锁其实就是自己使用的时候加上锁,不让别人用,用完了再把锁打开,让别人用,保证了一人一坑,解决了线程安全问题,但也带来了一些效率问题。锁的分类有不少,但都是为了在线程之间更高效共享数据,达到高效并发的效果。

2022-08-22 19:38:42 182

原创 Java随笔-volatile

volatile在实际开发中使用的并不多,少数单例会使用,但是大多是单例偏向于使用synchronized。volatile是Java提供的一种轻量级的同步机制,相比于synchronized,volatile不会引起上下文的切换和调度,所以更加的轻量。因为轻量,所以使用有所限制。

2022-08-21 16:48:22 240

原创 Java随笔-Semaphore

Semaphore(计数信号量)用来控制同时访问特定资源的线程数量,通过协调多线程,确保资源被合理使用。正常的锁在任何时刻都是只允许一个任务访问一项资源,而Semaphore允许多个任务同时访问一项资源。某些程度上和线程池有些相似,可用的数量固定,线程使用完后,剩下的进行排队,当有线程使用完毕后,放回线程池,然后再分配给排队的任务进行使用。...

2022-08-18 14:42:52 176

原创 Java随笔-CyclicBarrier

CyclicBarrier和CountDownLatch简直不要太像,CountDownLatch事件只能触发一次,而CyclicBarrier可以多次循环使用,作用是类似的,都是等所有的线程都执行完,再去执行特定的任务,但CyclicBarrier功能比CountDownLatch强大,CyclicBarrier是一组线程相互等待,发生阻塞,直到最后一个线程执行完,再打开屏障,被阻塞的线程继续执行。构造方法,parties:参与等待的线程数,小于1会报IllegalArgumentException。

2022-08-18 09:45:32 89

原创 Java随笔-CountDownLatch

CountDownLatch强调是其他任务执行完后,再执行指定任务,其他任务的执行顺序无法保证,当然可以多用几个CountDownLatch,也可以使用join()。join可以保证线程按顺序执行,即使线程睡眠。try {}执行结果是一样的。CountDownLatch中线程睡眠,执行顺序就不一样了。ProductManager 睡眠1000ms。try {} System . out . println("俺是产品经理,俺是提需求的");} }......

2022-08-17 13:46:59 225

原创 Java随笔-动态代理

代理是一种基本的设计模式,为目标对象提供另外的访问方式,通过代理访问目标对象可以扩展目标对象的功能,增加额外的功能,也就是不要修改别人的代码,但是可以扩展。生活中中常见的中间人,中间商,代理商,经纪人就是这个模式。代理分为三种:静态代理、动态代理、CGLIB代理.......

2022-08-16 20:20:32 201

原创 Android随笔-JNI

JNI:Java Native Interface,即Java本地接口,使Java与其他类型的语言进行交互,和C/C++交互的比较多。JNI属于Java的一部分,是JDK的组成部分,和Android关系不大,但是Android中核心的业务或高性能的功能都是C/C++开发的,比如游戏渲染、音视频编解码等,所以对于Android开发,JNI也是需要了解的。Android中并不是直接和C/C++打交道,是和.so(动态库),.a(静态库)文件打交道。...

2022-08-15 19:15:11 734 2

原创 Java随笔-Socket

套接字,一种独立于协议的网络编程的接口,对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,是一组接口。在设计模式中,Socket属于门面模式,因为把TCP/IP协议族隐藏在Socket后面,对于用户来讲,这组接口就是全部了,具体的数据让Socket去组织就可以了。应用程序就包含Socket和解析器即可,不需要针对每一层的协议进行处理,所有的工作都可以交给Socket完成,无需处理细节。应用程序和传输层之间的联系就是Socket。...

2022-08-15 16:15:23 275

原创 Java随笔-反射

1,class类,常见的getClass();运行时的类型标识,jvmclass.forName(name).newInstanceFiled,Method,Constructor,域,方法,构造

2022-08-12 23:32:22 213

原创 Java随笔-HTTP

超文本传输协议,用于从万维网服务器传输超文本到本地浏览器的传送协议。

2022-08-12 14:32:35 107

原创 Java随笔-TCP

因为服务器在收不到客户端的握手结果就会被拖累,当客户端的第一次握手的IP是伪造的,服务器收到后进行第二次握手,IP是伪造的,数据包发送到其他地方,客户端接收不到,所以第二次握手没有结果,没有结果服务器就会被拖累,死机。假设序列号为100,发送10byte的数据,接收方接收后回复确认号110=100+10,表示已收到接收方的数据包,下一个数据包从111开始。第一次告诉对方我没有数据要发送了,第二次对方说我知道了,第三次对方说我也没有数据要发送了,第四次我知道你也没有数据要发送了。.........

2022-08-11 19:40:18 241

原创 Java随笔-继承

定义子类覆盖方法子类构造继承层次多态方法调用final强制转换抽象类10.protected1,将公共操作和域放在超类2,不要使用受保护的域3,使用继承实现is-a的关系4,除非所有继承的方法都有意义,否则不要使用继承5,覆盖方法时,不要改变预期的行为6,使用多态,而非类型信息7,不要过多的使用反射..................

2022-08-11 16:31:16 234

原创 Java随笔-TCP/IP网络数据传输

TCP提供的是可靠的数据传输服务,是面向连接的,也就是需要数据传输的双方先建立连接,等连接(三次握手)建立成功后再开始传输数据,而且传输过程中采用“带重传的肯定确认”技术来实现传输的可靠性,还会采用“滑动窗口”的方式进行流量控制,发送完后关闭连接(四次挥手)。因为可靠,所以速度要比UDP慢一些,常用于HTTP。IPv4数量有限,所剩不多,所以启用了IPv6,IPv6共128位,16个字节,采用16进制表示,有3种表示方法:冒分十六进制表示法,0位压缩表示法,内嵌IPv4地址表示法。...

2022-08-11 10:23:34 794

原创 Java随笔-OSI模型与TCP/IP 模型

利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。

2022-08-10 16:33:44 544

原创 Android随笔-Unable to add window -- token null is not valid;is your activity running

描述进入App页面进行网络加载数据,需要显示loading的时候,出现android.view.WindowManager$BadTokenException: Unable to add window --token null is not valid; is your activity running?问题。分析mLoadingKProgressHUDView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.view

2022-05-17 09:33:13 871

原创 Android随笔-RecyclerView实现拖拽换位功能

概述RecycleView除了有强大的列表功能外,自身还带有Item拖拽和滑动功能,对于有这方面需求的开发来讲,可以节省不少时间。

2022-05-13 14:03:12 3567 1

原创 Android随笔-Room简单使用

Android随笔-room简单使用Room用于数据持久化,使用简单,对SQL不了解也可以快速使用,但暴露出来的api有限,遇到复杂的数据还需使用SQL。Room本身性能并无特别强大之处,但是在Androidx中配合了Lifecycle,可以感知生命周期是其他数据库无法比拟的;同时搭配WorkManager使用可以实现非即时(至少15分钟之后),且一定会实现的任务(APP没有被删除的情况下)(目前仅限于Google pixel)。本文只对Room的简单使用进行阐述,不涉及Lifecycle等其他内容。

2022-05-11 16:18:47 1560

原创 Android随笔-AAPT: error: resource android:attr/lStar not found.

问题描述S:\AndroidGradle\caches\transforms-3\9b83bb143dbaaaf608d4ff8def2d618a\transformed\core-1.7.0\res\values\values.xml:105:5-114:25: AAPT: error: resource android:attr/lStar not found.

2022-04-25 15:59:03 5648 2

原创 Android随笔-RelativeLayout代码中控制子View的位置

Android随笔-RelativeLayout代码中控制子View的位置

2022-04-20 11:26:22 3706

原创 Android随笔-LongClick时长有多长

描述最近听见有人争论长按的时长有多长,有人说是400毫秒,有人说是500毫秒。其实两种说法都对,AndroidSDK版本不同,时长也不一样。验证长按点击事件: new View(this).setOnLongClickListener(v -> false);点击事件执行时都在MotionEvent.ACTION_DOWN时,也就是手指按下时。长按点击事件其实就是一种延时操作。 case MotionEvent.ACTION_DOWN:

2022-04-20 10:32:00 1650

原创 Android随笔-include、merge、ViewStub

Android随笔-merge、include、viewStub

2022-04-15 15:24:03 2685

原创 Android随笔-getLayoutParams出现空指针

代码中创建布局,设置组件属性,调用getLayoutParams出现空指针问题

2022-04-15 08:00:00 1088

原创 Harmony随笔-资源引用

鸿蒙应用开发中资源文件的引用在xml文件中较为简单,但是java代码中需要根据资源类型做进一步处理。文中针对几种资源在java中的引用做一下简单介绍。

2022-04-02 08:00:00 548

原创 Java随笔-线程生命周期

以JDK16为例,线程有6种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。

2022-04-01 08:56:01 127

原创 Java随笔-堆

1. JVM管理的最大的一块内存。2. 可以被所有线程共享。3. 用于存放几乎所有对象实例和数组,但并不是所有的对象。4. GC回收的主要区域。5. 堆内存大小可以通过-Xmx和-Xms扩展,若堆无法扩展且没有内存分配给对象实例,将会抛出OOM。

2022-03-25 08:30:00 366

原创 Java随笔-Callable与FutureTask

通过Callable与FutureTask创建线程

2022-03-25 08:00:00 187

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除