11 一叶飘舟

尚未进行身份认证

技术真好!

等级
TA的排名 27

Android获取系统邮件账号

android账户取得方法:方法1:可以使用AccountManager8.0以下动态申请运行时权限Manifest.permission.GET_ACCOUNTS获取权限后取得账户的方法:你可以用AccountManager.getAccountsorAccountManager.getAccountsByType来获取账户列表代码如下所示:Pattern e...

2020-02-22 22:44:03

android 唤起系统分享文件或发送邮件(附件)

代码如下:Intent intent = new Intent(Intent.ACTION_SEND);intent.setData(Uri.parse("mailto:"));intent.putExtra(Intent.EXTRA_EMAIL, addresses);intent.putExtra(Intent.EXTRA_SUBJECT, subject);intent.set...

2020-02-17 17:35:46

解决Glide图片缓存问题,同一url换图片不起作用问题

解决方法有两个:1.每次加载都清理缓存。但这个方法是不可取的, 会导致每次都去网络加载图片. 显示非常慢. 这就相当于废弃了缓存这个好用的功能:Glide.with(this) .load(uri) .asBitmap() .centerCrop() .diskCacheStrategy( DiskCacheStrategy.NONE )//禁用磁盘缓存 .skip...

2020-01-19 16:25:03

Kotlin(run,apply)陷阱

泛型T首先我们先看一下apply的源码fun T.apply(block: T.() -> Unit): T { block(); return this }这个泛型T可以为null,也就是说null也被赋予了apply的方法null.apply{ System.out.println("null apply")}在IDE里面null是没有....

2020-01-16 15:29:33

Kotlin下的5种单例模式

前言最近在学习Kotlin这门语言,在项目开发中,运用到了单例模式。因为其表达方式与Java是不同的。所以对不同单例模式的实现进行了分别探讨。主要单例模式实现如下:饿汉式 懒汉式 线程安全的懒汉式 双重校验锁式 静态内部类式PS:该篇文章不讨论单例模式的运用场景与各种模式下的单例模式的优缺点。只讨论在Java下不同单例模式下的对应Kotlin实现。一、饿汉式实现/...

2020-01-15 12:20:04

Kotlin知识点

让你的 Kotlin 代码远离 !!简评:优雅的运用 Kotlin 的 null safety 特性,而不要简单的直接用 !!。对于 Null 的检查是 Kotlin 的特点之一。强制你在编码过程中考虑变量是否可为 null,因此可以避免很多在 Java 中隐藏的 NullPointerException。但是,当你用插件直接将 Java 代码转换为 Kotlin 时,你会发现有很多 ...

2020-01-15 12:07:31

遇到android.os.BadParcelableException: ClassNotFoundException when unmarshalling怎么解决

本文基于本人在项目开发中遇到的实际问题,对ClassNotFoundException异常发生的原因和解决办法做了探究。定位异常首先看看出问题的代码。Application 1 的部分代码:private MediaSessionCompat mMediaSession = new MediaSessionCompat(this, TAG); private void s...

2019-11-02 23:18:10

android View 绘制完成监听

//view重绘时回调view.getViewTreeObserver().addOnDrawListener(newOnDrawListener(){ @Override publicvoidonDraw(){ //TODOAuto-generatedmethodstub }});//布局的状态发生变化或者可见性发生变化才会调用vie...

2019-08-23 17:49:29

统计一个ViewGroup中包含的子View的个数(递归和非递归实现)

题:使用递归和非递归编码实现统计一个ViewGroup中所包含的子View的个数?首先大家想到的肯定是递归实现,简单且较容易想到,代码如下: /** * 递归统计一个View的子View数(包含自身) * * @param root * @return */ public int count1(View root) { ...

2019-08-22 18:32:57

FlexBoxlayout在项目的使用总结

前言FlexBoxlayout是Google推出的开源的可伸缩性布局,在项目中也会经场使用,大大提高了用户的体验。本文主要记录了 在项目中使用RecyclerView(多布局item)+FlexBoxLayout时遇到的问题做个总结,希望对你有所帮助。以自身的项目需求为例,如图所示:在”品牌筛选“、”客户分组“中用了三处可伸缩性布局。首先回顾一下相关概念和属性,已熟悉的同学...

2019-08-22 18:27:01

Git : 合并 commit 保持分支干净整洁

本文的读者需要已经了解基本的 Git 操作和开发流程。在我们开发完分支后,一般分支上会有很多 commit —— 少不了诸如 “fix typo”, “sth wrong in the previous commit” 之类的 commit。在合并到主干的时候,往往这类 commit 显得臃肿多余。为了方便别人做 code review,我们希望合并一些不必要的 commit 使我们的分支显...

2019-08-22 15:43:15

Git使用规范(Android版)

引言本文根据Git分支管理策略,结合Git Flow分支管理实践,制定了这个适合Android开发中的Git版本管理规范。同时结合实际操作演示了使用示例,希望对你有所帮助。1. 各分支简介下面分支中提到的的 version 应该替换为具体的版本,name 应该替换为具体的开发人员姓名,content 应该替换为需要优化的地方。master分支git的默认分⽀,主分支,不...

2019-08-22 14:55:16

Java Class对象与反射机制

Java Class对象RTTIRTTI(Run-Time Type Identification)运行时类型识别,其作用是在运行时识别一个对象的类型和类的信息。这里分两种:传统的”RRTI” — 它假定我们在编译期已知道了所有类型(在没有反射机制创建和使用类对象时,一般都是编译期已确定其类型,如new对象时该类必须已定义好) 反射机制 — 它允许我们在运行时发现和使用类型的信息...

2019-08-09 16:41:02

Git中tag标签的使用

一、什么是tagtag是git版本库的一个标记,指向某个commit的指针。tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 ...这样的标签。tag感觉跟branch有点相似,但是本质上和分工上是不同的:tag 对应某次commit, 是一个点,是不可移动的。branch 对应一系列commit,是很多点连成的一根线,有一个H...

2019-08-06 20:10:29

Java内存模型及volatile

大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程则慢得多(不是一个数量级),因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是说,当程序在运行过程中,会将运算需要的数据从主内存复制一份...

2019-08-05 00:16:31

Java线程等待唤醒机制(加深理解)

今天看源码的时候遇到这样一个场景,某线程里面的逻辑需要等待异步处理结果返回后才能继续执行。或者说想要把一个异步的操作封装成一个同步的过程。这里就用到了线程等待唤醒机制,下面具体看一下。等待唤醒机制示例下面代码是一个简单的线程唤醒机制示例,主要就是在Activity启动的时候初始化并start线程,线程start后会进入等待状态,在onResume方法中执行notify方法唤醒线程。通过这样...

2019-08-04 16:28:06

源码分析 — Activity的启动流程

前言熟悉Activity的启动流程和运行原理是一个合格的应用开发人员所应该具备的基本素质,其重要程度就不多做描述了。同时,知识栈应该不断的更新,最新发布的Android 9.0版本相较于之前的几个版本也做了许多改动和重构,但是大体流程变化不大。本文基于Android 9.0版本源码,从Activity启动方法startActivity为切入口分析整个流程。相关类简介Instrument...

2019-08-04 11:38:13

Android 查看并解决重复依赖

有时候引入了新的sdk后,build会出现如下问题:Caused by: com.android.dex.DexException: Multiple dex files define Lcom/google/gson/internal/bind/TypeAdapters; at com.android.dx.merge.DexMerger.readSortableTypes...

2019-07-31 18:12:32

从源码解析-Activity的setContentView是怎么加载XML视图的

首先新建一个Activity(如下图所示),我们点击AndroidStudio的顶部菜单栏的Tools菜单,依次点击里面的Android》Layout Inspector;这样就会弹出一个展示Activity窗口视图结构的窗口出来,如图当前activity的布局里只添加了一个textview,并且当前Activity在setContentView之前没有进行Features设置。当用鼠...

2019-07-31 17:46:58

从源码的角度解析Handler、Looper、Message和MessageQueue

原文链接:https://blog.csdn.net/yyh352091626/article/details/74280135作为一名Android程序猿,想必在最开始都碰到这么一个问题,就是在子线程中弹出一个Toast,会抛出以下的异常:java.lang.RuntimeException: Can't create handler inside thread that has n...

2019-07-30 18:11:26

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 博客之星
    博客之星
    授予通过"CSDN博客之星评选"中脱颖而出的十大博客之星称号的用户。
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。