自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android微信授权登录

这是官方接入文档:关于openSDK6.8.0的更新说明 | 微信开放文档根据官方文档的指引:第一步:申请你的 AppID首先要登录微信开发平放平台,注册账号,提交资料,然后审核通过才返回AppID和AppSecret微信开放平台...

2021-12-30 14:38:09 7183

原创 Gradle加载慢或是无法加载的问题处理

Gradle加载慢或是无法加载的问题处理

2023-04-24 18:25:25 1053 1

原创 git提交到远程分支

fatal: unable to access 'http://xxx.xxx.xx.x/xxxxxxxxx/App-Android.git/': Failed to connect to xx.xxx.xx.xx port 80 after 21046 ms: Couldn't connect to server

2023-04-24 18:09:38 240

原创 CoordinatorLayout+AppBarLayout 布局中实现自动吸顶以及滚动到某一固定位置的效果

CoordinatorLayout+AppBarLayout 布局中实现自动吸顶以及滚动到某一固定位置的效果

2022-12-05 14:04:11 905

原创 Android——跳转到小程序

Android跳转小程序的相关知识

2022-09-22 09:37:27 1973

原创 Android进程间的通信

1.IPC进程间的通信(Inter Process Communication)定义:进程间通过内核提供的机制完成数据交换2.Android多进程Application生命周期(onCreate) 数据共享失效(对象、单例、回调) 进程间通信(文件、Intent、AIDL)3.以下通过AIDL的三种方式实现进程间的通信3.1.IBinder:实现步骤:3.1.1:首先创建一个aidl接口,在其写需要用到的几个方法// IConnectionService.aidlpac

2022-04-26 10:47:16 737

原创 Android相关知识学习

Android新控件之MotionLayout 个人主页页面悬浮,缩放,平移,旋转效果<六> - 简书Android新控件之MotionLayout+CoordinatorLayout+TabLayout+ViewPager 悬浮置顶和顶部滑动动画<八> - 简书android 小技巧 - 简书Android项目200项 - 简书Android优化总结 - 简书Java 面试题(带答案) - 简书Android 面试之必问Android基础 - 简书...

2022-02-17 09:32:56 120

原创 Android 弹窗,底部弹窗,密码输入框,底部列表选择等

导入依赖:implementation 'com.lxj:xpopup:1.9.0'implementation 'com.contrarywind:Android-PickerView:4.1.9'public class DialogHelper { public static void showConfirmDialog(Context context, String title, CharSequence content, ...

2021-12-22 11:46:16 1989

原创 2021 最新Android知识体系

???? 2021 最新Android知识体系 - 掘金2021 年中:Android各大厂面试题汇总 - 掘金2021大厂Android面试最火问题,成功跳槽阿里! - 掘金

2021-12-02 11:50:20 1752

转载 Android 面试准备进行曲-Android 基础知识

基础部分Activity生命周期onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy()图片简要说明启动 onCreate -> onStart -> onResume 被覆盖/ 回到当前界面 onPause -> / -> onResume 在后台 onPause -> onStop 后退回到 onRestart ->

2021-12-02 11:47:11 187

原创 Android面试——>Android基础进阶

View相关View的绘制流程自定义控件: 1、组合控件。这种自定义控件不需要我们自己绘制,而是使用原生控件组合成的新控件。如标题栏。 2、继承原有的控件。这种自定义控件在原生控件提供的方法外,可以自己添加一些方法。如制作圆角,圆形图片。 3、完全自定义控件:这个View上所展现的内容全部都是我们自己绘制出来的。比如说制作水波纹进度条。View的绘制流程:OnMeasure()——>OnLayout()——>OnDraw()第一步:OnMeasure():测量视图大小。从顶层父V

2021-12-02 11:39:26 180

原创 kotlin进阶学习

Android—Kotiln进阶教程(一) - 掘金Android—Kotiln进阶教程(二) - 掘金Android—Kotiln进阶教程(三) - 掘金Android—Kotiln进阶教程(四) - 掘金Android—Kotiln进阶教程(五) - 掘金

2021-12-01 09:35:21 198

原创 Kotlin基础学习

Android—Kotiln基础教程(一) - 掘金Android—Kotiln基础教程(二) - 掘金Android—Kotiln基础教程(三) - 掘金Android—Kotiln基础教程(四) - 掘金Android—Kotiln基础教程(五) - 掘金Android—Kotiln基础教程(六) - 掘金Android—Kotiln基础教程(七) - 掘金Android—Kotiln基础教程(八) - 掘金Android—Kotiln基础教程(九) - 掘金...

2021-12-01 09:33:56 234

原创 Handler机制简介

一文掌握Android Handler消息机制核心代码 - 掘金Android知识点之Handler - 掘金面试再也不怕 Handler 了,消息传递机制全解析 - 掘金Android Handler解读 - 简书Android的Handler消息传递机制 - 简书

2021-11-30 10:07:31 892

原创 数据库GreenDao简介

1、GreenDao简介:greenDAO是一个开源的Android ORM,它让SQLite数据库的开发再次变得有趣。它使开发人员免于处理低级数据库要求,同时节省了开发时间。SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是非常繁琐且耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),greenDAO使您摆脱了这些麻烦。这样,您可以使用简单的面向对象的API来存储,更新,删除和查询Java对象。 ...

2021-11-29 14:28:42 2107

原创 Android JetPack之——Room

room简介:在JetPack系列中,Room是一个非常重要的组件。作为一个ORM库,其在原生的SQLite数据库上面进行了封装,以便更好的提供服务Room的三个注解:@Entity:@Entity用来注解实体类,其代表的是一张数据库表,通常情况下@Entity注解中我们传入了一个参数 tableName用来指定表的名称,如果不传默认类名为表名。(1)@PrimaryKey注解用来标注表的主键,并且使用autoGenerate = true 来指定了主键自增长。(2)@ColumnInfo注解用

2021-11-29 13:56:12 1950

原创 自定义View简介

在Android中,所有的控件都是继承基类View的。我们通常在实现自定义View中,有几种方式自定义组合控件:就是将经常使用的UI封装成一个View,比如我们页面的标题 继承View:不复用系统控件逻辑,自定义实现自己需要的功能,比如贝塞尔曲线 继承ViewGroup:比如继承FrameLayout、RelativeLayout、LinearLayout,在原有的逻辑功能上扩展其他功能 继承View: 比如TextView、Button等,在原有的逻辑功能上扩展其他功能 继承View.

2021-11-29 10:57:14 153

原创 Retrofit网络请求介绍

Retrofit源码流程图:Retrofit是Square开源的一款适用于Android网络请求的框架。Retrofit底层是基于Okhttp实现的,与其他网络框架不同的是,它更多使用运行时注解的方式提供功能Retrofit优缺点:优点可以配置不同httpclient来实现网络请求,如OKhttp、httpclient等 请求的方法参数注解都可以定制 支持同步、异步和RxJava 超级解耦 可以配置不同的反序列化工具来解析数据,如json、xml等 使用非常方便灵活 框..

2021-11-24 10:53:25 1628

原创 Okhttp网络请求工具介绍

1.Okhttp请求流程:Okhttp内部的大致请求流程图如下所示:使用方式:public class OkHttpUtils { private static String TAG = "OkHttpUtils"; private static String url = "http://www.baidu.com"; //OkHttp 异步get请求 public static void OkHttpEnqueue() { OkHttp.

2021-11-23 16:04:21 3300

原创 RecycleView的复用、优化、缓存

1、RecycleView四级缓存:1.1、从上图中看出:RecycleView的缓存从上到下分为四层:scrap、cache、ViewCacheExtension、RecycleViewPool1.2、RecycleView缓存的对象是ViewHolder,而RecycleView复用的对象也是ViewHolder1.3、Recycler负责管理和缓存所有的ViewHolder。2、四级缓存介绍:2.1、scrap:从图中可以看出,scrap是用来缓存正在显示的ViewH.

2021-11-22 10:41:49 1916

原创 Glide知识简介

首先Glide是Google为我们推荐的一个快速高效的图片加载库,使用简单。第一步:添加依赖://glide的依赖 implementation 'com.github.bumptech.glide:glide:4.9.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'简单使用:一行代码即可搞定://一行代码搞定的方法Glide.with(上下文).load(url地址).into(im...

2021-11-19 11:19:16 2146

原创 HashMap、HashTable、HashSet简介

Hash是Map接口的实现Hash允许空的key_value键值对,HashMap被人认为是Hashtable加强版,HashMap非线程安全,所以当多个线程对同一个HashMap进行操作时,需要加同步锁,可以是Collections.synchroniredMap(new HashMap)来创建一个线程安全的Map,如果想构造线程安全的Map可以考虑ConcurrenHashMap。因为HashMap是无序的,因为HashMap无法保证内部存储的键值对的有序性。HashMap的底层数据结构是数组

2021-11-18 17:47:03 833 1

原创 LiveEventBus、EventBus、RxBus的简介和区别

LiveEvenBus是一款Android的消息总线,基于LiveData,具有生命周期感知能力,支持Sticky,支持Androidx,支持跨进程,支持跨app优点:1.生命周期感知消息随时订阅,自动取消订阅 告别消息总线造成的内存泄露 告别生命周期造成的奔溃2.范围全覆盖的消息总线解决方案进程内消息发生 APP内,跨进程消息发送 APP之间的消息发送2.使用2.1添加依赖:implementation 'com.jeremyliao:live-event-bus

2021-11-18 16:21:31 1829

原创 LiveData介绍

LiveData是一种可观察监听的数据存储类,当生命周期发生、数据有更新时,observer可感知监听到。LiveData是最好跟ViewModel配合使用,而MutableLiveData继承LiveData,所以使用时可以直接用MutableLiveDataLiveData只有观察者的生命周期处于活跃状态时才会去通知观察者,比如started,resumed不会发生内存泄漏: observer会在LifecycleOwner状态变为DESTROYED后自动remo...

2021-11-18 15:28:29 590

原创 Service两种启动模式的区别

说明:service是一种服务,运行在主线程上,需要依托Android程序运行,不能做耗时操作1.startService生命周期:onCreate()—— onStartCommand() —— onDestory()启动完之后该service就在后台运行,其生命周期跟启动它的context没有关系,也不能跟context通讯2.bindService生命周期:onCreate()—— onBind()—— onUnbind() —— onDestory()启动完之后生命周期跟它的

2021-11-18 11:39:19 1814

原创 提交代码出现 Push to origin/master was rejected 错误解决方法

1.一般发生在GitHub或码云刚刚创建仓库第一次pull的时候,两个仓库的差别非常大,所以git拒绝合并两个不相干的东西2.解决方法:依次输入一下命令即可解决:git pullgit pull origin mastergit pull origin master --allow-unrelated-histories如果还是提交不了可以试试下面这行代码git push -u origin master -f...

2021-11-12 16:01:47 1157

原创 Android文件下载、解压带进度条

异步下载模式:/** * Created by zhuangxiaozheng on 2021/10/9. */public class DownLoaderTask extends AsyncTask<Void, Integer, Long> { private final String TAG = "DownLoaderTask"; private URL mUrl; private File mFile; private ProgressDia.

2021-10-13 10:18:26 440

原创 Android文件下载

public class FileDownloadUtils { private String sdPath; public FileDownloadUtils() { sdPath = Environment.getExternalStorageState() + "/"; } /** * 在SD卡上创建文件 * * @param fileName * @return * @throws IOExce.

2021-10-09 15:21:06 304

原创 Android文件工具类(复制文件、解压文件等功能)

public class FileUtilss { private static final String TAG = "FileUtils"; private FileUtilss(){} static void copyFiles(String fromPath, String toPath) { File fromPathFile = new File(fromPath); if (fromPathFile.exists() &&a.

2021-10-08 16:24:20 411

原创 Android悬浮窗功能

如果每个界面都要显示悬浮窗,则把这段代码写在BaseActivity即可,如果只是在某个界面显示,直接在该Activity写就可以了,或是直接在布局xml文件写。FrameLayout rootView = (FrameLayout) getWindow().getDecorView(); FrameLayout.LayoutParams textParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_C.

2021-09-28 10:00:26 254

原创 Android MMKV数据持久化存储

/** * MMKV 基于 mmap 的高性能通用 key-value 组件工具类 */public final class MMKVPreferenceUtil { private MMKVPreferenceUtil() { throw new UnsupportedOperationException("u can't instantiate me..."); } /** * 存入支持的数据类型 * * @par.

2021-09-24 14:57:35 585

原创 数组转List

public class ArrayToListUtils { //通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。 // 关键代码:List list = Arrays.asList(strArray); public static List arrayToList1(Object[] array) { List list = Arrays.asList(array); .

2021-08-09 15:02:32 151

原创 java.lang.NullPointerException 空指针问题

空指针出现闪退的原因就是数据为空,所以使用数据时最好都进行判空,特别是请求网络获取后台数据,你不知道后台是否在维修或是返回数据格式进行修改等问题,你没判空都会导致空指针,出现闪退空指针闪退问题的解决办法:1.从本获取数据:数据库,文件等2.请求网络获取后台数据3.从进程间获取其他进程或是线程的数据4.activity之间的数据传递特别是多层级的数据格式,每一层都要进行判断:如:返回的bean为 InfoDataResponse:{ id : 1,...

2021-08-09 11:27:47 2636

原创 ANR问题

一、《Android ANR监测诊断以及解决办法》1.Android Vitals:向你警告ANR问题的发生,上架Google play才可以。2.最经常发生的ANR的几种情况:在主线程中执行IO操作 在主线程执行长时间的计算 主线程执行同步Binder操作访问另一个进程,该进程执行很长时间再返回 非主线程持有lock,导致主线程等待lock超时 主线程和另一个线程发生死锁,可以是位于当前进程或者通过Binder调用3.Strict mode:严格模式,一个debug时候可以用来严格监

2021-08-06 09:43:51 157

原创 Activity 启动流程

Activity 启动的整体流程普通 Activity 的启动普通 Activity 的启动就是通过调用 startActivity 函数启动一个新的 Activity。总体流程如下图:其中涉及了两个进程,App 进程和 AMS 进程。整体步骤是:启动者 Activity 向 Instrumentation 请求启动目标 Activity; Instrumentation 通过 AMS 在 App 进程的 IBinder 接口(IActivityManager),访问 AMS,此时 A

2021-07-30 14:01:11 931

原创 Attempt to read from field ‘android.os.VibrationEffect com.android.server.VibratorService$Vibration.

对于这个问题:Attempt to read from field 'android.os.VibrationEffect com.android.server.VibratorService$Vibration.mEffect' on a null object referencecom.fw315relate.client.core.RawPlayer.play(RawPlayer.java:142)之前一直以为没有初始化,导致出现为空的状态。最后才发现这个功能需要申请权限的,具

2021-07-29 09:56:58 614

原创 Attempt to invoke interface method ‘java.lang.Object[] java.util.Collection.toArray()‘ on a null obj

对于这个问题:Attempt to invoke interface method ‘java.lang.Object[] java.util.Collection.toArray()’ on a null object reference很明显是集合的问题:大部分是因为集合为空null,所以使用到集合的地方最好判空,特别是网络请求给集合赋值后其他地方需要用到,所以如果网络请求慢或是赋值出错,加下来的操作肯定会出问题。所以需要定位到你的代码中,检查使用的集合中是否没判空以下是我的代码:

2021-07-29 09:50:19 4207

原创 集合(面试可用)

ArrayList和LinkedList的区别: ArrayList和LinkedList分别是基于数组和双向链表实现的线性表。由于实现原理的不同,ArrayList和LinkedList在随机查询和插入、删除时的效率存在着差异。ArrayList随机查询快插入、删除慢,适用于查询频繁、修改少的场景。LinkedList随机查询慢插入、删除慢,适用于查询少、修改频繁的场景。1.ArrayListArrayList 是基于数组实现的、可以自动扩容的、地址连续的线性表 Arrayl...

2021-07-28 11:59:40 59

原创 面试必备-线程中的锁

VolatileVolatile有两个作用:1 保证内存可见性内存可见性指的是: 一个线程修改了这个变量的值,另一个线程能立刻看到。2 禁止指令重排(有序性)由于cpu在运行时,可能会根据上下文信息对指令做一些重排序,导致执行的顺序和我们期望的不一样,加了volatile之后,cpu将会取消对该变量的重排优化,保证运行顺序和我们代码期望的一样。volatile最常用在DCL单例中,volatile修饰的变量读操作跟普通的变量几乎没有区别,但是写操作效率会低一些(因为需要加内

2021-07-23 16:06:41 144

原创 Android图片优化

1.首先要知道图片大小的计算:图片大小:分辨率 * 每个像素点的大小分辨率就是比如一张图片的大小1080 * 452,这就是分辨率 像素点的大小:ALPHA_8 -- (1B) RGB_565 -- (2B) ARGB_4444 -- (2B) ARGB_8888 -- (4B) RGBA_F16 -- (8B)2.所以图片的优化,就是减小的图片的大小,减小图片的大小,可以根据图片的计算公司去考虑减少像素点大小 减低分辨率3.备注:图片是加载进内...

2021-07-23 10:41:04 337 1

空空如也

空空如也

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

TA关注的人

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