![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
功能篇
文章平均质量分 60
迷路国王
丰富有趣
展开
-
Flutter 打包APK aab
Flutter 打包小技巧原创 2022-09-01 12:11:44 · 2390 阅读 · 0 评论 -
Android代码混淆配置:ProGuard
混淆转载 2022-08-15 13:56:40 · 1148 阅读 · 0 评论 -
Android 创建APP退出到后台 显示通知栏
ForegroundPushManager.ktobject ForegroundPushManager { val notificationId = 200 //显示通知 fun showNotification(context: Context){ var notification = createForegroundNotification(context) NotificationManagerCompat.from(context).no原创 2022-03-08 16:08:39 · 2821 阅读 · 0 评论 -
Android实现横幅通知
代码如下: /** * 通知栏(兼容android 8.0以上) */ boolean isVibrate=true;//是否震动 //1.获取消息服务 NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //默认通道是default String channelId="default";原创 2021-09-14 15:37:06 · 2381 阅读 · 0 评论 -
java线程池面试题----Executor框架解读实战
Executor 简介从代码上看,Executor 是一个简单的接口,但它却是整个异步任务执行框架的基础,这个框架能支持多种不同类型的任务执行策略。他提供了一种标准的方法将任务的提交过程和执行过程解耦开来,任务用 Runnable 来表示。Executor 基于生产者-消费者模式,提交任务的线程相当于生产者,执行任务的线程相当于消费者。同时,Executor 的实现还提供了对任务执行的生命周期管理的支持。Executor 引入的原因大多数并发应用程序都是围绕[任务执行]来构造,应用程序的工作可以被分.原创 2021-08-01 22:22:37 · 217 阅读 · 0 评论 -
java线程池面试题-----手写线程池实战
一、线程池实战例子项目背景:需要查出一百个用户的信息,并且给他们的邮箱发送邮件,打印出最终结果用户类public class User { private Integer id; private String email; public User(Integer id, String email) { this.id =id; this.email =email; } public String getEmail() {原创 2021-08-01 22:17:36 · 237 阅读 · 0 评论 -
java面试题---手写一个简单版的线程池
有些人可能对线程池比较陌生,并且更不熟悉线程池的工作原理。所以他们在使用线程的时候,多数情况下都是new Thread来实现多线程。但是,往往良好的多线程设计大多都是使用线程池来实现的。为什么要使用线程降低资源的消耗。降低线程创建和销毁的资源消耗。提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间提高线程的可管理性下图所示为线程池的实现原理:调用方不断向线程池中提交任务;线程池中有一组线程,不断地从队列中取任务,这是一个典型的生产者-消费者模型。要实现一个原创 2021-08-01 22:08:46 · 713 阅读 · 3 评论 -
java面试---线程池分析和线程的生命周期解读
面试必问:面试问题1:Java的线程池说一下,各个参数的作用,如何进行的? 面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。面试问题3:线程池都有哪几种工作队列?面试问题4:使用无界队列的线程池会导致内存飙升吗? 面试问题5:说说几种常见的线程池及使用场景?线程池概念线程池: 简单理解,它就是一个管理线程的池子。它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需转载 2021-07-31 18:34:29 · 806 阅读 · 0 评论 -
java阻塞队列详解和并发队列的那些事
在之前的线程池的介绍中我们看到了很多阻塞队列,这篇文章我们主要来说说阻塞队列的事。 阻塞队列也就是 BlockingQueue ,这个类是一个接 口,同时继承了 Queue 接口,这两个接口都是在 JDK5 中加入的 。BlockingQueue 阻塞队列是线程安全的,在我们业务中是会经常频繁使用到的,如典型的生产者消费的场景,生产者只需要向队列中添加,而消费者负责从队列中获取。如上图展示,我们生产者线程不断的 put 元素到队列,而消费者从中 take 出元素处理,这样实现了任务与执行.原创 2021-07-31 16:26:14 · 182 阅读 · 1 评论 -
Java并发面试题 — 阻塞队列(BlockingQueue)
什么是阻塞队列阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法:当队列为空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。在阻塞队列不可用时,这两个附加操作提供了4种处理方式,如下所示:抛出异常:原创 2021-07-31 10:25:26 · 680 阅读 · 0 评论 -
java线程面试题:原子操作类的正确使用实战
什么是原子操作原子的意思是说“不能被进一步分割的粒子”,而原子操作是说“不可被终端的一个或多个系列的操作”。假定有两个操作A和B,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。java中可以通过锁,锁机制的方式来实现原子操作,但是有时候需要更有效灵活的机制,synchronized关键字是基于阻塞的锁机制,也就是说当一个线程拥有锁的时候,访问同一资源的其它线程需要等待,直到该线程释放锁,因为synchronized关键字具有排他性,如原创 2021-07-30 13:56:38 · 167 阅读 · 0 评论 -
java线程面试题:CAS带来的三大问题及解决方案
1.ABA问题因为CAS需要在操作值的时候,检查值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么CAS进行检查的时候发现它的值没有发生变化,但是实际上却变化了。ABA问题的解决思路就是使用版本号。在变量前面加上版本号,每次变量更新的时候把版本号加1,那么A->B->A就会变成1A->2B->3A。从Java 1.5开始,JDK的Atomic包里提供了一个类AtomicStampedReference来解决ABA问题。这个类的compare原创 2021-07-30 10:59:09 · 316 阅读 · 0 评论 -
Java线程面试题--------死磕 java线程系列之线程的生命周期
简介大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。常见的错误有:就绪状态、运行中状态(RUNNING)、死亡状态、中断状态、只有阻塞没有等待状态、流程图乱画等,最常见的错误就是说线程只有5种状态。今天这篇文章会彻底讲清楚线程的生命周期,并分析synchronized锁、基于AQS的锁中线程状态变化的逻辑。所以,对synchronized锁和AQS原理(源码)不了解的同学,请翻一下彤哥之前的文章先熟悉这两部分的内容,否则肯定记不住这里讲的线程生命周期。转载 2021-07-27 10:21:07 · 115 阅读 · 0 评论 -
Android 集成云信推送 (三)踩过的那些坑
<!--云信key--> <meta-data android:name="com.netease.nim.appKey" android:value="" /> <!-- 小米推送 --> <!-- 配置的service和receiver --> <meta-data android:name="com.xiaomi.push.原创 2021-07-20 15:48:08 · 1546 阅读 · 0 评论 -
Android 集成云信推送(二)设置是否允许接受推送通知
布局按钮代码设置:mMessageToggle.isChecked = NIMClient.getService(MixPushService::class.java).isEnablemMessageToggle.setOnClickListener { // false关闭通知栏消息提醒 true 开启通知栏消息提醒 val checked = NIMClient.getService(MixPushService::class.java)..原创 2021-07-20 15:24:04 · 376 阅读 · 0 评论 -
Android 集成云信推送 (一)通知栏跳转
第一步: 注册自定义推送消息处理NIMPushClient.registerMixPushMessageHandler(DemoMixPushMessageHandler())第二步public class DemoMixPushMessageHandler implements MixPushMessageHandler { @Override public boolean onNotificationClicked(Context context, Map<Stri原创 2021-07-20 15:15:14 · 675 阅读 · 0 评论 -
Android中数值的精确计算
Android中数值计算的精度Java中有一个类是BigDecimal,该类是专门计算一些要求精度很高的算法,常用于银行金融类的计算,BigDecimal一共有4个够造方法,我们不关心用BigInteger来够造的那两个,那么还有两个, 它们是:BigDecimal(double val) Translates a double into a BigDecimal. BigDecimal(String val) Translates the String r原创 2021-05-23 10:21:43 · 427 阅读 · 0 评论 -
【Android珍藏】推荐github上炫酷的开源库
前言技术群里面经常有人问到一些炫酷的UI效果实现方法,有时候我都是给一个相同或者相似效果的Github链接,有同学私信给我说,大佬,怎么这些效果你都能找到?你是怎么搜索的,或者有其他什么秘方?会利用Google、百度等搜索工具搜索是一方面,另一个重要的方面是:记录搜藏,当看到一个炫酷的效果的时候,记得收藏起来,记录到自己云笔记或者收藏夹里,看得多了,印象就比较深刻,当遇到类似效果的时候,到自己记录收藏的地方找就是了。今天为大家推荐我所收藏的一些炫酷实用的效果的开源库(选择其中10个)。1、Discret原创 2020-08-07 13:29:49 · 1379 阅读 · 0 评论 -
Android 功能篇之 多行Item 解决单选问题
前提:如下图所示,这是一个导航选择弹框。进行单项选择,然后会监听回调选择的事件。问题是Android的RadioButton是一般是放在RadioGroup中进行管理的,而RadioGroup又是线性布局,即单行有效,多行无效。如图那种就需要两个RadioGroup来进行合作。那么如果进行合作呢?效果如下分析:RadioGroup多行显示其实就是两个RadioGroup进行切换,使用Ra...原创 2020-04-21 13:17:54 · 262 阅读 · 0 评论 -
Android实现一个显示中间的dialog
效果展示xml编写<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_c原创 2020-05-15 11:52:45 · 601 阅读 · 0 评论 -
Android 自定义view-倒计时控件
直接上代码自定义TextView文字展示public class StrokeTextView extends TextView { private TextView borderText = null;///用于描边的TextView private Context mContext; public StrokeTextView(Context context) { super(context); mContext = context;..原创 2020-06-12 11:17:57 · 938 阅读 · 1 评论 -
Android 下载工具类----DownloadUtil(一个带有下载进度的工具类)
废话不多说,直接上代码。build.gradle //okhttp implementation 'com.squareup.okhttp3:okhttp:3.1.1'DownloadUtil 下载工具类public class DownloadUtil { private static DownloadUtil downloadUtil; private final OkHttpClient okHttpClient; public static Dow.原创 2020-07-08 17:25:18 · 1969 阅读 · 1 评论 -
自定义的控件 实现一个绕圆圈的箭头
自定义的类import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;...原创 2018-11-01 13:29:00 · 226 阅读 · 0 评论 -
Glide 加载圆形图片
第一种Glide.with(context).load(datas.get(position).getImgPath()).asBitmap().centerCrop().placeholder(R.mipmap.image_error).into(new BitmapImageViewTarget(viewHolder.animalImage) {@Overrideprotected ...原创 2019-10-22 14:51:10 · 282 阅读 · 0 评论 -
自定义view之 五子棋
自定义viewpublic class GobangPanel extends View {private int mPanelWidth; //五子棋宽度private float mLineHeight; //边框线高度private int MAX_LINE = 10; //最大行数private int MAX_COUNT_IN_LINE=5; //数量为5的时候就胜利了...原创 2019-10-29 09:10:38 · 200 阅读 · 1 评论 -
自定义view之 刮刮卡效果
第一步设置定义viewpublic class GuaGuaKa extends View {private Paint mOutterPaint;private Path mPath;//手指划屏幕的路径private Canvas mCanvas;private Bitmap mBitmap;//使用mOutterPaint在mBitmap上绘制private int mLastX...原创 2019-10-30 09:41:41 · 105 阅读 · 0 评论 -
自定义view之酷炫的进度条
实现思路 :使用自定义属性和ProgressBar来实现设置自定义viewpublic class HorizontalProgressBarWithNumber extends ProgressBar{private static final int DEFAULT_TEXT_SIZE = 10;private static final int DEFAULT_TEXT_COLOR...原创 2019-10-30 10:05:36 · 136 阅读 · 0 评论 -
自定义view之炫酷的进度条(二)
第一步 利用上一个自定义view实现扩展public class RoundProgressBarWidthNumber extendsHorizontalProgressBarWithNumber{/*** mRadius of view*/private int mRadius = dp2px(30);private int mMaxPaintWidth;public Rou...原创 2019-10-30 10:11:32 · 121 阅读 · 0 评论 -
自定义view之颜色 选择器
第一步 自定义图片加载器public class ImageHelper {public static Bitmap handleImageEffect(Bitmap bm, float hue, float saturation, float lum) { Bitmap bmp = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), ...原创 2019-10-30 13:06:00 · 168 阅读 · 0 评论 -
自定义view(四)自定义进度条(仿汽车时速表)
第一步 :自定义view/**Created by TU on 2019/11/19.*/public class ArcProgressBar extends View {private int diameter = 500; //直径private float centerX; //圆心X坐标private float centerY; //圆心Y坐标private ...原创 2020-01-03 11:59:57 · 260 阅读 · 0 评论 -
Android 仿vivo商店下载进度条
vivo商店在下载应用的时候,底部有一个圆角矩形的下载进度条,中间有一个进度文字,而且进度和文字交汇的时候,交汇部分的文字会从蓝色边为白色,会有一种一半白色字,一半蓝色字的效果。最终效果和对比vivo商店效果分析1 - 计算进度进度计算就比较简单了,我们通过复写onSizeChanged()方法,获取到控件的宽后,先计算当前进度百分比,再将百分比乘以宽度,就可以得到应该绘制的宽度了。绘...原创 2020-01-06 13:26:48 · 489 阅读 · 0 评论 -
Android 单双击实现
记录单击、双击实现过程,进行简单的封装,便于复用,包括常用的软件双击退出。1.双击实现:记录第一次点击时间,在设定时间内再次点击,则返回监听事件,否则不做处理;Application双击退出亦是同样的实现逻辑。/** * 双击实现 * */public abstract class BaseDoubleClickListener implements View.OnClickListe...原创 2020-02-21 16:50:26 · 321 阅读 · 0 评论 -
Android 组件化开源app -开眼短视频(OpenEyes)
一款模仿 Eyepetizer | 开眼视频的 开源app这是一个完全模仿 开眼视频的开源Demo,个人非常喜欢这款app 的UI 风格,由此第二次模仿该app进行相关技术的学习与整合,废话不多说,直接上图 ,不论是商业项目还是开源app,首先肯定是看眼缘效果图:项目结构该开源项目采用组件化的方式开发,使用MVVM + AndroidX + jetpack 组件为基本架构进行开...原创 2020-03-03 14:15:19 · 507 阅读 · 0 评论 -
自定义view实现未读消息提示(小红点)
自定义view继承RadioButtonpublic class NotifyRadioButton extends RadioButton {Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);float radius;boolean notify;public NotifyRadioButton(Context context, Attr...原创 2020-03-30 15:33:26 · 1258 阅读 · 0 评论 -
Android 实现抖音头像底部弹框效果
布局文件activity_test.xml<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_...原创 2020-04-20 21:12:17 · 655 阅读 · 0 评论 -
Android自定义view- 圆形进度条控件
效果图使用方式<CircularProgressView android:layout_width="match_parent" android:layout_height="match_parent" android:padding="30dp" app:backColor="@color/colorPrimary" app:backWidth="20dp" app:progColor="@color/colorAccent" ap原创 2020-05-14 07:43:07 · 1367 阅读 · 0 评论 -
Android 自定义View 不一样的圆形进度条
效果如下:主要代码CircularProgressView.javapublic class CircularProgressView extends View { private Paint mBackPaint, mProgPaint; // 绘制画笔 private RectF mRectF; // 绘制区域 private int[] mColorArray; // 圆环渐变色 private int mProgress; //原创 2020-07-11 15:48:50 · 209 阅读 · 0 评论 -
Android矢量图动画:每人送一辆CSDN牌小黄车
看完本文,每人送一台小黄车,CSDN牌的~不得不说,矢量图在项目中用得少之又少,却很香!可缩放矢量图形(SVG)是一套语法规范,常在前端中使用,而VectorDrawable(Android中的矢量图)只实现了SVG的部分语法。使用VectorDrawable代替位图可以减小 APK 的大小,因为可以针对不同的屏幕密度调整同一文件的大小,而不会降低图片质量,同时可以实现一些复制的效果图。可以从下面两个地方获得常用矢量图:IconFontAndroid Stuido 自带的Vector Asset S原创 2020-07-15 07:50:16 · 230 阅读 · 0 评论 -
Android自定义view之潜艇大作战
效果如下:根目录 build.gradle ext.kotlin_version = '1.3.61' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"model的build.gradleapply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'android{ compileOptions {原创 2020-07-25 15:49:59 · 237 阅读 · 0 评论 -
Android 自定义流式布局 实现淘宝搜索记录
效果如下:废话不多说实现代码:attrs.xml<declare-styleable name="TagFlowLayout"> <!--最大选择数量--> <attr name="max_select" format="integer"/> <!--最大可显示行数--> <attr name="limit_line_count" format="integer"/>原创 2020-08-02 09:06:09 · 1151 阅读 · 1 评论